Python 3.x 为什么不是';t while循环wokring package=输入(“输入包名称a、B、C:”) 当包装“或包裹!”“或包裹!”b'或包装!='B'或包装!='c'或包!='C': 打印(“Erorr:您没有输入有效的包”) 包装=输入(“输入包装名称a、B、C:”)
每次我输入字母a-c或a-c时,编译器都会卡在while循环中,即使我继续重新输入值,代码说是这样,只要包不等于这些值,由于Python 3.x 为什么不是';t while循环wokring package=输入(“输入包名称a、B、C:”) 当包装“或包裹!”“或包裹!”b'或包装!='B'或包装!='c'或包!='C': 打印(“Erorr:您没有输入有效的包”) 包装=输入(“输入包装名称a、B、C:”),python-3.x,Python 3.x,每次我输入字母a-c或a-c时,编译器都会卡在while循环中,即使我继续重新输入值,代码说是这样,只要包不等于这些值,由于或s,条件总是True。 将所有条件放在一个简单的条件语句中可以解决这个问题 package = str(input("Enter a package designation A,B, C: ")) while package.lower() not in ['a','b','c']: print("Erorr:you didn't e
或s,条件总是True
。
将所有条件放在一个简单的条件语句中可以解决这个问题
package = str(input("Enter a package designation A,B, C: "))
while package.lower() not in ['a','b','c']:
print("Erorr:you didn't enter a valid package")
package = str(input("Enter a package designation A,B, C: "))
这有一个很好的理由
让我在下面解释一下,这样我就可以让你轻松一点
每次你写信时,条件都是真实的。
但为什么呢
让我们一起调试:
package=输入(“输入包装名称a、B、C:”)
我们以字母“c”
package-True
package!='b'或包装!='B'==>True
package!='c'或包!='C'=>True
但请稍候。。这怎么可能呢
好的package!=“c”=>False
但是包!='C'=>True
那么这种情况的结果是什么呢正确
这是因为如果其中一个条件为True,or语句将返回True
这就是你陷入无休止循环的原因
解决方案:
package = input("Enter a package designation A,B, C: ")
letters = "abcABC"
while package not in letters:
print("Erorr:you didn't enter a valid package")
package = input("Enter a package designation A,B, C: ")
你应该知道这个问题有更好的解决方案,但我想采用更简单的方法
无论如何,希望这能有所帮助。请编辑您的问题。关于它的一切都是草率的。没有任何str
值用于package!='“或包裹!”“
(扩展为检查的其余部分)可能是真的。考虑一下你认为哪一个值满足这一点,并检查它的表达式。我同意这个问题不是很好,但是直接你的逻辑是有缺陷的,因为你的while循环总是正确的。用“A”完成它。这不等于“a”,所以你得到了真的,你的OR已经满足并且是真的,所以继续循环。您需要使用和,但类似于不在[“A”、“B”、“C”]中的while package.upper()会更具可读性。感谢您的所有评论和帮助。