def bigAndSmall(path):
# 定义最大值接收变量,但是不能赋值,初始赋值第一行
biggest = None
# 定义最小值接收变量,但是不能赋值,初始赋值第一行
smallest = None
# 打开文件
with open(path) as f:
# index从0开始,0表示列名行,这行需要忽略不处理
index = 0
# 遍历文件
for item in f:
# 剔除右边的换行空格字符
line = item.rstrip()
# 将line拆分为数组
line = line.split(',')
# 第一行赋值给最大最小
if index == 1:
biggest = line
smallest = line
elif index > 1:
# 比较出生率,转换为float,字符串无法比较
if float(biggest[5]) < float(line[5]):
biggest = line
if float(smallest[5]) > float(line[5]):
smallest = line
# 遍历完行号+1
index += 1
# 打印结果
print(f'The highest birthrate was {biggest[5]} which occurred in {biggest[2]} County {biggest[1]} in {biggest[0]}')
print(
f'The lowest birthrate was {smallest[5]} which occurred in {smallest[2]} County {smallest[1]} in {smallest[0]}')
bigAndSmall('teenpreganc.txt')
看不懂
可以参考代码,仅使用for循环遍历。优化的话可以考虑使用字典。
# -*- coding: UTF-8 -*-
def bigAndSmall(path):
f = open(path) # 返回一个文件对象
line = f.readline()
biggest = line # 调用文件的 readline()方法
smallest = line # 调用文件的 readline()方法
while line:
line = f.readline()
if line == '':
continue
smallest = getSmall(line, smallest)
biggest = getMax(line, biggest)
print(biggest)
print(smallest)
f.close()
# 获取较小
def getSmall(l, r):
l_ar = l.split(',')
r_ar = r.split(',')
if l_ar[-1] < r_ar[-1]:
return l
else:
return r
# 获取较大
def getMax(l, r):
l_ar = l.split(',')
r_ar = r.split(',')
if l_ar[-1] > r_ar[-1]:
return l
else:
return r
if __name__ == '__main__':
bigAndSmall(r"D:\test\test.txt")
def bigAndSmall():
with open('teenpreganc.txt') as f:
hasValue=0
firstLine=1
for line in f: # 按行读取,不用管是否是第一行
if firstLine: #如果是标题,跳过
firstLine=0
else:
if not hasValue: #如果max和min还没有赋值,则赋值
max=float(line[5])
min=float(line[5])
else:
if float(line[5])>max:
max=float(line[5])
maxline=line #用于保存其它信息待打印
if float(line[5])<min:
min=float(line[5])
minline=line
print(f'The highest birthrate was {max} which occurred in {maxline[2]} County {maxline[1]} in {maxline[0]}')
print(f'The lowest birthrate was {min} which occurred in {minline[2]} County {minline[1]} in {minline[0]}')
把数据按照最后一列从大到小排个序不就知道了,排序第一的年份最高,最后一个年份出生率最底
这是求最大的
import datetime
list_time = []
chuo=[]
a = input()
while a: # 当获取到空串时停止获取输入
list_time.append(a)
a = input()
#print(list_time)
for time in list_time:
time1=datetime.datetime.strptime(time,'%Y-%m-%d').timestamp()#转化为时间戳
chuo.append(time1)
chuo1=sorted(chuo)
index=chuo.index(chuo1[0])
print(list_time[index])
最小的同理
def BigAndSmall():
with open("data1.txt") as f:
all_info = [i.strip().split(',') for i in f.readlines()]
all_data = all_info[1:]
max_br = min_br = float(all_data[0][5])
for idx,value in enumerate(all_data):
if max_br < float(value[5]):
max_br = float(value[5])
max_idx = idx
if min_br > float(value[5]):
min_br = float(value[5])
min_idx = idx
print(f"The highest birthrate was {all_data[max_idx][5]} which occurrend in {all_data[max_idx][1]}.{all_data[max_idx][2]} in {all_data[max_idx][0]}")
print(f"The highest birthrate was {all_data[min_idx][5]} which occurrend in {all_data[min_idx][1]}.{all_data[min_idx][2]} in {all_data[min_idx][0]}")
BigAndSmall()
--result
The highest birthrate was 77 which occurrend in Alabama.Barbour in 2007
The highest birthrate was 18 which occurrend in Alabama.Baldwin in 2020