询问直到输入在列表中?

Asking until the input is in the list?

试图理解 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”分支进行,这是一个中断。 Break 将“中断”循环的执行,因此接下来打印的是“不是那些数字之一”并且执行停止并且不会要求您进行其他输入。

如果你输入一个像“4”这样的数字会发生什么?嗯,和我想的一样。那是因为你的输入是一个字符串,而不是一个数字,你问的是字符串“4”是否在数字列表中,但事实并非如此。您需要将输入解析为 int,您可以通过将输入调用包装在“int”函数中来实现 - int(input(“Type a number:”)) 现在“number”将是一个 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,如果数字在列表中,它会让你跳出循环。