【问题标题】:Ask the user how many days that they collected gems询问用户他们收集了多少天的宝石
【发布时间】:2020-10-06 19:05:35
【问题描述】:

这里的第一次用户和编程新手。 询问用户他们收集了多少天的宝石。您编写的循环应该循环用户输入的天数。如果用户输入 5 天,那么循环应该循环 5 次以收集每天的数据。

因此,每个循环迭代代表一天。在每个循环迭代中,询问用户他们当天收集了多少宝石。循环完成每天收集数据后,计算收集的宝石总数和平均宝石。将平均值显示为浮点值。

示例输入/输出(您的输出应完全匹配): 你收集了多少天的宝石? 5

输入第 1 天收集的宝石数量:5 输入第 2 天收集的宝石数量:4 输入第 3 天收集的宝石数量:3 输入第 4 天收集的宝石数量:2 输入第 5 天收集的宝石数量:1

收集的宝石总数:15 平均每天收集宝石:3.00

我相信我有很多正确的地方,但有些地方出了问题,我无法弄清楚。

days = int(input("How many days did you collect gems?"))

total = 0


for total in range(1, days + 1):
    gems = int(input("Enter the number of gems collected on day {0}:".format(total)))


total_gems = total + days + days
print("Total gems collected:","{0:.0f}".format(total_gems))

average_gems = float(total_gems / days)
print("Average gems collected per day:","{0:.2f}".format(average_gems))

【问题讨论】:

  • 你能解释一下为什么你认为有问题,以便我们可以写出更有针对性的答案吗?另外,出于好奇,您为什么认为这是对的?也许我们可以澄清一些困惑。
  • 如果你说 6 天和每天 2 ,2,6,3,4 颗宝石,我使用 total_gems 方程得到的输出不能正常工作。
  • 相信days输入是对的,total、loop、gems输入是对的。我可能是错的(这很可能),但我不知道,我一直在努力纠正一段时间。
  • 您丢弃了gems 变量,并且在每次循环迭代时破坏了total 中的值。
  • 好的,如何将“gems”输入相加?这意味着我需要在某个地方摆脱“总”?

标签: python variable-assignment


【解决方案1】:

您的代码几乎是正确的,但是您对特定变量的使用有点混乱,并且您没有保留每个日常输入,而是通过将每次重新分配给 gems 来覆盖前一天的输入没有先用以前的值做某事。这是一个可以满足您要求的实现:

days = int(input("How many days did you collect gems?"))

total = 0

for day in range(1, days + 1):
    gems = int(input("Enter the number of gems collected on day {0}:".format(day)))
    total += gems

print("Total gems collected: {0}".format(total))

average_gems = float(total) / days
print("Average gems collected per day: {0:.2f}".format(average_gems))

示例运行:

How many days did you collect gems?4
Enter the number of gems collected on day 1:6
Enter the number of gems collected on day 2:6
Enter the number of gems collected on day 3:2
Enter the number of gems collected on day 4:1
Total gems collected: 15
Average gems collected per day: 3.75

【讨论】:

  • 天哪,就是这样!?求主怜悯。非常感谢。我知道是这样的,但我一辈子都想不通!
  • 很高兴能帮上忙。仅供参考,如果您认为此答案确实回答了您的问题,则应单击复选标记使其变为绿色。
  • 我会的!谢谢!
【解决方案2】:

您正在“破坏”for 循环中的total 变量,因为for total in range(1, days + 1): 正在重复使用total。例如,以下代码的输出为 9:

x = 1
for x in range(1, 10):
    pass
print(x)

此外,在循环的每次迭代之后,您都会丢弃 gems 变量,因为您从未在任何地方使用它。

您应该将循环的变量更改为 total 以外的变量,并在循环内将 gems 添加到 total

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多