用Python创建一个显示降雨量的程序

0 投票
3 回答
876 浏览
提问于 2025-04-18 03:51

我需要写一个程序,这个程序会使用一些特定的降雨量数据(不需要用户输入这些数字),然后输出每个月的降雨量、平均值、总量、最小值和最大值。我的程序应该是这样的:

Austin Tx Rainfall 2009

Jan    0.40

Feb    0.94

Mar    3.21

Apr    3.74

May    1.73

Jun    1.03

Jul    1.27

Aug    2.58

Sep    6.98

Oct    6.90

Nov    2.80

Dec      2.53

Total   34.11

Average 2.84

Max    6.98

Min    0.40

这是我目前写的代码:

amount = []
total = 0
month = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
am =[0.4,0.94,3.21,3.74,1.73,1.03,1.27,2.58,6.98,6.9,2.8,2.53]
for j in range(len(am)):
    total+=j
print('Austin Tx Rainfall 2009')
print ("Month\t\tTotal Rainfall")
for i in range(len(month)):
    print (month[i], "\t\t", amount[i])
#total
print ("Total:\t\t ", total)
#average
average = total/12
print ("Average:\t",average)
min=min(am)
max=max(am)
print("min:\t",min)
print("max:\t",max)

但是,当我运行它的时候,结果是这样的:

print (month[i], "\t\t", amount[i])
IndexError: list index out of range

如果能帮我解决这个问题,我会非常感激。
还有一个问题,当我试着把降雨量加起来时,结果却是把索引号加起来了,所以总和变成了66(0+1+2+3+4+5+6+7+8+9+10+11)。我该怎么做才能让总和加上实际的数据呢?

3 个回答

1

经过一些重写:

COLUMNS = "{:<12} {:>4}".format

months  = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
amounts = [0.4,0.94,3.21,3.74,1.73,1.03,1.27,2.58,6.98,6.9,2.8,2.53]

def main():
    print('Austin Tx Rainfall 2009')

    print(COLUMNS("Month", "Total Rainfall"))
    for month, amount in zip(months, amounts):
        print(COLUMNS(month, amount))

    print(COLUMNS("Total:", sum(amounts)))
    print(COLUMNS("Average:", sum(amounts) / len(amounts)))
    print(COLUMNS("Min:", min(amounts)))
    print(COLUMNS("Max:", max(amounts)))

main()

这会得到

Austin Tx Rainfall 2009
Month        Total Rainfall
Jan           0.4
Feb          0.94
Mar          3.21
Apr          3.74
May          1.73
Jun          1.03
Jul          1.27
Aug          2.58
Sep          6.98
Oct           6.9
Nov           2.8
Dec          2.53
Total:       34.11
Average:     2.8425
Min:          0.4
Max:         6.98
1

你的金额列表是空的,

而你的总金额应该这样计算:

for j in range(len(am)):
total = total + am[j]

2

你的 amount 是空的。你可能想要

print (month[i], "\t\t", am[i])

撰写回答