试图理解while循环,但在输入一个不在列表中的数字后,它不会继续询问,直到它是列表中的数字之一。
number = 12
while number not in [0,1,2,3,4]:
number = input("type a number: ")
print(number)
if number in [0,1,2,3,4]:
print('one of those numbers')
else:
break
print('not one of those numbers')
如果你输入4343,上面的会给出这个结果:
type a number: 4343
4343
not one of those numbers
如果分步执行代码,您可以看到"number"变量得到你输入的4343。然后检查number是否在0-4的列表中。它不是,所以执行会沿着& else"分支,这是一个断点。打破意志"打破";循环的执行,所以下一个打印的东西是&;不是那些数字之一&;并且停止执行,并且不要求您再输入。
如果您要键入一个数字,如"4"会发生什么?我也这么认为。这是因为你输入的是字符串,而不是数字,你问的是字符串"4"在数字列表中,但它不在。你需要将输入解析为int型,你可以通过将输入调用包装在"int"函数- int(输入("键入一个数字:")),现在"数字"将是整型,而不是字符串。
number = 12
while number not in [0,1,2,3,4]:
number = int(input("type a number: "))
print(number)
if number in [0,1,2,3,4]:
print('one of those numbers')
break
else:
print('not one of those numbers')
continue
正如@inteoryx所说,当你给出一个输入时,它是一个默认的字符串值。你必须把它转换成整数,如果数字不在列表中,你使用break语句。Break语句使您脱离循环,您应该使用continue语句代替。我在if语句中添加了break,如果数字在列表中,它将使您退出循环。