我在运行这个程序时遇到了问题,这是凌晨2点左右,所以我真的只想把它解决掉。无论如何,我需要创建一个程序,其中计算并显示数周(由用户输入)的捐赠总额和平均值。该程序使用嵌套循环来收集数据并计算平均值。
它的工作方式是:
我在创建此程序时遇到三个主要问题。首先是我的循环嵌套不能按照我想要的方式工作。
weeks = input("How many weeks available for collection? ")
for donation_week in range(0, weeks):
for donation_day in range(0, donation_week*5):
amount = input("How much money was donated today? ")
break
week_total = amount * 5
collection_total = week_total * weeks
average = collection_total / weeks
print "In", weeks, "weeks, a sum of", collection_total, "was collected and an average"\
" of", average, "was donated each week"
例如,如果用户输入3周,我希望该计划每周获得5次,所以15次。但它没有,而只是要求两次金额。
第二个问题是当用户输入1周或0周时,会出现错误状态 “NameError:名称'金额'未定义”
最后一个问题是我在编码中还没有涉及的问题,如果用户每天输入不同的金额,我将如何计算周的总数(week_total)。我实际上只将量作为一个变量,一周5天有5个量变量。
同样,我对python很新,我的指导指南实际上并没有触及这些细节。我一直在尝试重新安排和改变这个程序两个小时左右,我现在仍然很困难。希望有人在这里分享他们的知识。非常感谢。
答案 0 :(得分:2)
首先,break
语句导致内循环提前终止。
其次,您必须计算循环内的运行总计(或至少将值保留在某处)。目前,您每次迭代都会覆盖amount
。
最后,week_total
和collection_total
逻辑看起来很可疑。只需保留每日金额的运行总和,最后除以每周平均值的周数。
答案 1 :(得分:0)
一次回答一个问题:
例如,如果用户输入3周,我希望该计划每周获得5次,所以15次。但它没有,而只是要求两次金额。
如上所述,因为你的休息,只需摆脱它,它会不止一次。
第二个问题是,当用户输入1周或0周时,会发生错误,其中指出" NameError:name' amount'未定义"
好吧,让我们用一周的时间来追踪它:
for donation_week in range(0,1): #range(0,1) == [0]
for donation_day in range(0, 0*5): #during the first (and only) loop, donation_day is 0, so do no loops
因此,当它越过循环时,设置amount
的行永远不会执行,因此未定义数量。尝试在程序顶部将其定义为0,以避免出现此问题。
另外,第二个声明没有理由in range(0, donation_week*5)
,如果你想让它每周要求5个话,那就完全错了。如果你想要它,它应该只是in range(5)
(如果没有明确设置开始,也假设0)所以它将每周做5次循环。你拥有它的方式,第一周会问0次,第二周会问5次,第3次等等。
最后一个问题是我实际上还没有在编码中触及过这个问题,如果用户每天输入不同的金额,我将如何计算周的总数(week_total)。我实际上只将量作为一个变量,一周5天有5个量变量。
如果你这样做,以便在程序顶部定义金额为0,你可以在每次获得时将输入添加到金额。它不会记录每天捐赠的金额,但如果您只想要总计和平均值,它就能完美运行。
因此,如果您在程序顶部发起金额,并将amount = input
行更改为amount += input
以跟踪运行总计(也可能会删除week_total和collection_total,我不会#39;看到它已经用完了)并像我提到的那样在你的for循环中修复逻辑,你应该是金色的。