【问题标题】:New to python. Was wondering if anyone can check if my code solves the problem question蟒蛇新手。想知道是否有人可以检查我的代码是否解决了问题
【发布时间】:2019-02-02 07:48:24
【问题描述】:

编写一个程序,使用嵌套循环来收集数据并计算几年内的平均降雨量。该程序应首先询问年数。外循环将每年迭代一次。内部循环将迭代十二次,每个月一次。内部循环的每次迭代都会询问用户该月的降雨量。在所有迭代之后,程序应显示月数、总降雨量以及整个期间每月的平均降雨量。

input_years=int(input('Enter number of years:'))
for years in range(input_years+1):
    total = 0.0
    for month in range(13):
        input_month=int(input('Enter the amount of rainfall for that month:'))
        total=+input_month
    average=total/month
    print("This is the number of months:",input_month )
    print("This is the total number of rainfall",total,"inches")
    print("This is the average rainfall permonth",format(average,".2f"))

【问题讨论】:

  • 它没有,不。但是您应该自己尝试并找出问题,然后调试任何问题。如果您发现无法解决的特定问题,请创建minimal reproducible example
  • 有关审查代码的问题应在CodeReview 提出。 StackOverflow 适用于具有特定问题/问题的问题。在姐妹网站上发布问题之前,请仔细阅读他们的帮助,他们也有规则。

标签: python average


【解决方案1】:

最好自己尝试一下,但我想在第 2 行指出这一点

for years in range(input_years+1):

您不需要添加“+1”,因为它会在包括 0 在内的范围内进行迭代,请尝试以下操作:

for x in range(5):
    print("Hello World!")

它将打印“Hello World” 5 次。

第 4 行也有同样的问题

for month in range(13):

【讨论】:

    【解决方案2】:

    您的代码实际上有两个问题,一个是您在for month in range(13): 中重复了一次额外的时间,因为范围从0 开始。另一个问题是在您的 for 循环中,您正在执行 total=+input_month,因此您只需将 total 设置为等于上个月的条目。应该是total += input_month

    【讨论】:

    • 这种说法是错误的:“您的月份在上一次迭代中增加了 1,变为 13 而不是 12。”。现在是 12...
    • 感谢您的评论。我已经相应地更新了我的答案。
    【解决方案3】:

    你的代码的问题:

    1. 每个 For 循环的迭代次数太多了
    2. 要求您计算整个期间,而不是每年
    3. 您混淆了变量,例如 input_month 不是月数
    4. 你没有增加总数total=+input_month应该是total+=input_month

    建议:

    1. 修复循环
    2. 有整个期间的总数,而不是每年
    3. 仅在循环中获取输入并增加总数
    4. 在两个循环之外进行计算
    5. 使用周期 = 12*input_years,平均值 = 总/周期

    【讨论】:

    • 喜想究竟应该在循环中修复?
    • @AlexanderPaul 迭代次数,正如每个答案都告诉你的那样
    【解决方案4】:

    一年内您的代码循环次数过多。它应该循环 12 次,但它循环了 13 次。

    使用 Python 2 时格式不正确。代码输出如下:

    ('This is the number of months:', 13)
    ('This is the total number of rainfall', 13, 'inches')
    ('This is the average rainfall permonth', '1.00')
    

    要解决此问题,请在变量之间使用加号而不是逗号。执行此操作时,您还需要将变量作为字符串传递给打印命令。

    如果您使用的是 Python 3,解决方案是删除与 print 一起使用的 ()。 感谢 @SimonF 所做的更改。

    从用户那里获取降雨时显示单位也是一个不错的功能。

    希望这会有所帮助!

    【讨论】:

    • 您使用的是 python2,这就是为什么您会得到奇怪的打印输出。但是可以通过使用 input 和 print with () 来假设 Alexander 使用 python3 (否则他使用它们是错误的,而不是你)。解决方案是删除与 print 一起使用的 ()
    猜你喜欢
    • 2020-04-29
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2021-05-25
    • 2015-07-30
    • 2022-01-07
    相关资源
    最近更新 更多