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等)只是对为什么会发生这种情况感到困惑 - 在计算机编程的介绍中,所以任何帮助都会受到赞赏(愚蠢的帮助)
答案 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_)