如果变量不在给定范围内,则返回错误消息 - 但始终返回错误消息?

时间:2017-07-31 21:05:49

标签: python sum

我一直绞尽脑汁想弄清楚为什么这个简单的程序不起作用。它总是返回错误消息。

这是一个占用5个整数并加起来的程序,但是如果它们大于100或小于0,它会返回一条错误消息..除了它总是返回这个,无论放入什么数字。

我是新人,所以我知道它可能过于复杂或迂回,但无论如何都应该有效。This is a picture of my programming.

2 个答案:

答案 0 :(得分:0)

将来使用代码格式选项在您的问题中发布代码。

“或”运算符查看返回布尔值true / false值的2个表达式的输出。所以你使用它的方式是不正确的。

>>> if 1 or 2 or 3 not in [1,2,3]:
...     print "hi"
...
hi
>>> if 1 not in [1,2,3] or 2 not in [1,2,3] or 3 not in [1,2,3]:
...     print "hi"
...
>>>

考虑上面的例子。第一个就是你在做什么。你应该做后者。

答案 1 :(得分:0)

True无法按照您的想法运作。

它比较它旁边的两个语句,如果其中一个是or,那么语句是正确的。在这种情况下,所有整数都是正确的,所以使用第一个int_one or int_two... 语句:

True

将永远为真,因为整数被视为if int_one not in range or int_two not in range or int_three not in range or int_four not in range or int_five not in range: !因此,您的比较应该是:

while

为了更快地进行比较,我会创建一个列表并使用user_input_list = [] i = 0 while len(user_input_list) < 5: user_input = int(input("Enter the " + str(i+1) + "th number:")) if 0 <= user_input <= 100: user_input_list.append(user_input) i += 1 else: print("Please enter a number from 0 to 100") 让用户将他们的输入输入到列表中并逐个进行比较:

h = legend(strcat('$\kappa$ = 0.1 MHz/','$\mu$','s'),...
    strcat('$\kappa$ = 0.5 MHz/','$\mu$','s'))
set(h,'Interpreter','latex')

Try it here!