【问题标题】:Python Beginning: Can't figure out how to tell user their number is odd or even (for 5 numbers)Python 开始:不知道如何告诉用户他们的数字是奇数还是偶数(对于 5 个数字)
【发布时间】:2020-09-03 05:42:16
【问题描述】:

我刚刚注册,我不确定这是否会转到正确的论坛(假设这是这里的事情)。

我几周前才开始学习 python。我们正在进行迭代。

这是我们这次作业的阅读材料:https://www.py4e.com/html3/05-iterations

这是我的代码的作业。

编写一个程序,让用户输入五个数字,一个在一个 时间。每次输入后,告诉用户该数字是奇数还是 甚至。在所有条目的末尾,显示所有条目的总和 在屏幕上输入数字。

x = 0
num = 0   
while x < 5:
    x += 1
    num += int(input("Enter a number: "))
    mod = num % 2
    if mod > 0:
        print(num-x,"is an odd number.")
    else:
        print(num-x,"is an even number.")
print("Your total is",num)

这不适用于作业的奇数和偶数部分。我很确定它与每次用户输入一个新数字时都会更改“num”变量有关,而不是仅仅告诉用户他们刚刚输入的数字是偶数或奇数,而是添加数字。

所以,如果第一个用户输入是 3,它会说它很奇怪。但如果他们再次为第二个数字输入 3,它会说它是偶数,因为它将 3 + 3 相加得到 6。显然,我不希望它在最终打印之前将数字加起来。

This is my output:
Enter a number: 1
0 is an odd number.
Enter a number: 1
0 is an even number.
Enter a number: 1
0 is an odd number.
Enter a number: 1
0 is an even number.
Enter a number: 1
0 is an odd number.
Your total is 5

显然,所有这些 1 都应该是奇数,而我现在才意识到 0 不属于那里。

【问题讨论】:

  • 你是在测试当前累计和是奇数还是偶数,而不是刚刚输入的数字。
  • 对,我只想测试输入的数字的奇数或偶数。我不知道如何让它停止测试奇数或偶数的总和。

标签: python variables while-loop iteration


【解决方案1】:

您正试图将num 用于两个不同的目的:

  • 累计总和
  • 刚刚输入的号码

因此,您最终会测试累积和的奇数/偶数,而不是刚刚输入的数字。

将它们分成两个不同的变量numtotal,然后它会变得更容易。

我建议也使用for 而不是while 循环x

total = 0   
for x in range(5):
    num = int(input("Enter a number: "))
    mod = num % 2
    if mod > 0:
        print(num, "is an odd number.")
    else:
        print(num, "is an even number.")
    total += num

print("Your total is", total)

【讨论】:

    【解决方案2】:
    x = 0
    total_num = 0
    while x < 5:
        num = int(input("Enter a number: "))
        mod = num % 2
        if mod > 0:
            print(num,"is an odd number.")
        else:
            print(num,"is an even number.")
        total_num += num
        x += 1
    
    print("Your total is",total_num)
    

    【讨论】:

      【解决方案3】:

      你说对了一部分。检查数字是奇数还是偶数的逻辑很好。 现在,问题是每次您阅读一个数字时,您都会将这个新数字添加到前一个数字中。这里的解决方案是使用另一个变量来跟踪总数,这样您就可以单独检查数字是否是奇数/偶数,并在最后得到总和。
      此外,如果您检查mod == 0 而不是mod &gt; 0,它看起来更干净。所以只需切换那些。 最后,您不需要从您的 num 中减去 xx 只是您的计数器,用于跟踪您在给定时刻的迭代。

      x = 0
      num = 0
      total = 0
      while x < 5:
          x += 1
          num = int(input("Enter a number: ")) # Read new number
          total += num # Add new number to the total
          mod = num % 2 # Check if new number is odd
          if mod == 0:
              print(num,"is an even number.")
          else:
              print(num,"is an odd number.")
      print("Your total is",total)
      

      【讨论】:

        【解决方案4】:

        不要将变量 num 相加,而是分配一个不同的变量来计算输入的数字。

        x = 0
        num = 0
        sum1 = 0
        while x < 5:
                x += 1
                num = int(input("Enter a number: "))
                sum1 += num
                mod = num % 2
                if mod > 0:
                       print(num,"is an odd number.")
                else:
                       print(num,"is an even number.")
        print("Your total is",sum1)
        

        对缩进进行了细微的更改,分配了一个额外的变量并且它起作用了。

        【讨论】:

          【解决方案5】:

          我不是 Python 程序员,但您需要第三个变量来计算总数。目前 num 正在做这部分工作,当使用 += 分配一个值时。这意味着它正在对小计而不是在条目值上进行 mod。

          应该是:

          num = int(input("Enter a number: "))
          

          没有+。

          然后你需要第三个变量在最后显示总数:

          total = total + num
          

          【讨论】:

            猜你喜欢
            • 2014-07-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-31
            • 2011-11-12
            • 2018-07-13
            • 2023-01-20
            相关资源
            最近更新 更多