奇数之和循环打印两次

时间:2018-02-12 00:42:45

标签: python

M = eval(input("Input the first number "))
N = eval(input("Input the second number(greater than M) "))
sum = 0

    while M <= N:
        if M % 2 == 1:
            sum = sum + M
            M = M + 1
            print(sum)

这是我的python代码,每次运行程序时,它会打印两次数字。 (1 1 4 4 9 9等)只是对为什么会发生这种情况感到困惑 - 在计算机编程的介绍中,所以任何帮助都会受到赞赏(愚蠢的帮助)

3 个答案:

答案 0 :(得分:0)

我的猜测是print语句没有在if语句中正确缩进。因为总和不会增加偶数而其他所有数字都是偶数

确保所有内容都缩进

M = eval(input("Input the first number "))
N = eval(input("Input the second number(greater than M) "))
sum = 0

while M <= N:
    if M % 2 == 1:
        sum = sum + M
        print(sum)
    M = M + 1

答案 1 :(得分:0)

我最好的选择是在if语句的范围之后添加M ++行。 真正发生的事情是你的增量仅在if语句中有效但这在逻辑上是不正确的,因为它应该在每次循环执行时递增。

答案 2 :(得分:0)

摆脱eval()really do not need it.并将其替换为int()。默认情况下,input()是一个字符串,因此int()会将其转换为整数。

您使用的是保留关键字sum

尝试运行sum.__doc__。您会看到sum实际上是inbuilt function。您不应该创建与内置函数同名的变量。但是,您可以使用下划线(在pep8中描述),这将创建一个工作变量。

更正后的代码:

M = int(input("Input the first number "))
N = int(input("Input the second number(greater than M) "))
sum_ = 0

while M <= N:
    if M % 2 == 1:
        sum_ = sum_ + M
        M = M + 1

        print(sum_)