gpt4 book ai didi

python - 在 Python 数组中使用 max() 和 min() 失败

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:44 24 4
gpt4 key购买 nike

上下文:继续自学 Python,我最近完成了一个教科书练习,要求一个程序允许用户定义“x”年数并能够输入,对于“x”中的每个月,降雨量值。

问题:下面是我的代码,工作正常,但是最新的练习要求我“扩展”我的代码,以在打印语句中显示数字上最大和最小的用户输入降雨值.

披露:我曾向 S.O 寻求尝试找到我的问题的解决方案,但似乎没有任何东西足以接近我的挑战,来帮助我。

我尝试过的:我尝试过使用 max()min() 但我不断收到 TypeError :当我键入代码 print(max(monthlyRainfall)print(min(monthlyRainfall)

时,“int”对象不可迭代
def yearsToTrack():
userYearsTracking = int(input("How many years do you want to track: "))
return userYearsTracking

def calculationAlgorithm(userYearsTracking):
totalMonths = 0
totalRainfall = 0
for currentYear in range (1, userYearsTracking +1):
for currentMonth in range (1, 13):
monthlyRainfall = int(input("Inches of rainfall for month " + format(currentMonth, "d",) + " | year " +
format(currentYear, "d",)+": "))
totalMonths += 1
totalRainfall += monthlyRainfall
averageRainfall = totalRainfall / totalMonths
print("Total months: " + str(totalMonths))
print("Total rain:", format(totalRainfall), "(inch)")
print("Total average rainfall:", round(averageRainfall,2), "(inch)")

def main():
userYearsTracking = yearsToTrack()
calculationAlgorithm(userYearsTracking)
main()

有人可以提供一些关于我哪里出错的“指示”吗?

最佳答案

您可以使用sys.maxsize0 来初始化用于跟踪最小和最大降雨量值的变量,实际上用户永远不会分别输入高于或低于这些值。

但是,对于第二种情况,只是为了确保您还可以添加一个简单的检查,以确保用户不会输入负降雨量:

def calculationAlgorithm(userYearsTracking):
totalMonths = 0
totalRainfall = 0
maxRainfall = 0
minRainfall = sys.maxsize
for currentYear in range (1, userYearsTracking +1):
for currentMonth in range (1, 13):
monthlyRainfall = int(input("Inches of rainfall for month " + format(currentMonth, "d",) + " | year " +
format(currentYear, "d",)+": "))
if monthlyRainfall < 0:
print("Error invalid rainfall entered")
sys.exit()
if monthlyRainfall > maxRainfall:
maxRainfall = monthlyRainfall
if monthlyRainfall < minRainfall:
minRainfall = monthlyRainfall
totalMonths += 1
totalRainfall += monthlyRainfall
averageRainfall = totalRainfall / totalMonths
print("Total months: " + str(totalMonths))
print("Total rain:", format(totalRainfall), "(inch)")
print("Total average rainfall:", round(averageRainfall,2), "(inch)")
print("Largest input rainfall: " + str(maxRainfall))
print("Smallest input rainfall: " + str(minRainfall))

尝试进行上述更改的完整程序 here.

用法示例:

How many years do you want to track:  1
Inches of rainfall for month 1 | year 1: 2
Inches of rainfall for month 2 | year 1: 2
Inches of rainfall for month 3 | year 1: 2
Inches of rainfall for month 4 | year 1: 2
Inches of rainfall for month 5 | year 1: 4
Inches of rainfall for month 6 | year 1: 1
Inches of rainfall for month 7 | year 1: 2
Inches of rainfall for month 8 | year 1: 2
Inches of rainfall for month 9 | year 1: 2
Inches of rainfall for month 10 | year 1: 2
Inches of rainfall for month 11 | year 1: 2
Inches of rainfall for month 12 | year 1: 2
Total months: 12
Total rain: 25 (inch)
Total average rainfall: 2.08 (inch)
Largest input rainfall: 4
Smallest input rainfall: 1

注意我只使用过camelCase 命名新变量,因为这是您正在使用的样式。我建议将程序中的所有变量名称更改为 snake_case因为这是 python 中的约定。

关于python - 在 Python 数组中使用 max() 和 min() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com