Python while-True循环的两个条件

Python while-True循环的两个条件,python,Python,我想写一个while True循环,当且仅当用户输入的数字: 是一个整数 数字是1或2 我是这样写的,但不知怎的它不起作用 while True: s1=input("Choose the item you want to buy (1 and/or 2 only): ") try: a=int(s1) 3>a>0 break except ValueError: pass 您需要实际检查该

我想写一个
while True
循环,当且仅当用户输入的数字:

  • 是一个整数
  • 数字是1或2
我是这样写的,但不知怎的它不起作用

while True:
    s1=input("Choose the item you want to buy (1 and/or 2 only): ")
    try:
        a=int(s1)
        3>a>0
        break
    except ValueError:
        pass
您需要实际检查该值:

if 0 < a < 3:
    break
然而,值得一提的是,你在
try
块中拥有的越少越好;你最终可能会对自己隐瞒错误。因此,更好的结构可能是:

try:
    a = int(s1)
except ValueError:
    pass
else:
    if 0 < a < 3:
        break
试试看:
a=int(s1)
除值错误外:
通过
其他:
如果0
我希望循环不断重复,直到它满足这两个条件。您可以将其放入现有的
循环中,而
循环非常感谢您的帮助
try:
    a = int(s1)
except ValueError:
    pass
else:
    if 0 < a < 3:
        break