01、列表的应用实例
【例1】下面是上海某一周各天的最高和最低气温(单位为℃)。
最高气温:13、13、18、18、19、15、16;
最低气温:5、7、10、13、11、8、9。
编写程序,找出这一周中第几天最热(按最高气温计算),最高气温是多少,这一周中第几天最冷(按最低气温计算),最低气温是多少,并求出全周各天的平均气温,最后,根据这一周的气象数据判断上海是否已经入春(假设在气象意义上,入春的标准是连续5天日均气温大于或等于10℃)。
分析:本题需要求取最高气温数据中的最大值及其位置、最低气温数据中的最小值及其位置、每天气温的平均值及该周气温平均值等。如果单纯用变量和循环来做,程序会比较复杂。因此这里用列表来保存数据,使用循环来控制程序。
运用循环结构来计算这周每天的平均气温、判断是否连续5天的日平均气温超过10℃。可以将计算得到的各天的日平均气温保存在列表L3中。通过for循环可以依次访问该列表中的每个元素。设变量k是日均气温大于或等于10℃的天数计数器,在访问L3列表的循环体外初始化为0。如果k的值已经大于或等于5,则不需要继续判断。只有当k小于5,如果某天日均气温大于或等于10℃则加1。当k小于5时,一旦某天日均气温低于10℃,就将累计的天数k清0,后续重新计算大于或等于10℃的天数。当循环结束,如果k这个连续天数计数器大于或等于5,表明有连续5天的日均气温超过10℃。
程序源代码如下:
#example4_4.py
# coding = gbk
L1 =[13,13,18,18,19,15,16)
L2 =[5,7,10,13,11,8,9]
L3 =[]
maxVal = max(L1)
maxDay = L1.index(maxVal)
minVal = min(L2)
minDay = L2.index(minVal)
print("这周第",maxDay+ 1,"天最热,最高",maxVal,"c",sep=")print("这周第",minDay+ 1,"天最冷,最低",minVal,"c",sep=")
for i in range(len(L1)):
L3.append((L1[i] + L2[ ])/2)
print('这周每天的日平均气温:L3)avg = sum(L3)/len(L3)print("周平均气温为:",avg)
k=0
for i in L3:
if k<5:
ifi>=10:
k += 1
else:
k=0
else:
break
if k>=5:
print("上海这周已入春。")
else:
print("上海这周未入春。)
程序example4_4.py的运行结果如下: