此循环不会像我想要的那样循环。我希望它循环播放直到输入有效

时间:2019-01-09 16:18:26

标签: python

此循环不起作用,因为它与我所做的与此相同的另一个while循环相同。我希望它循环播放直到输入有效答案。它第一次问我,如果我弄错了,它又问我一次,但此后不再重复。除非输入有效的输入,否则变量“ a”将永远不会更改。我做错了什么?编辑:第一次使用该网站,我想我还不够具体,这是带有一些固定更改的完整代码

selectcharacter = input("Select Your Character:")
while a == 1:
    if selectcharacter != 1 and selectcharacter != 2 and selectcharacter != 3:
        selectcharacter = input("Select Your Character:")
        continue
elif: selectcharacter == 1
    a == 2
    break
elif: selectcharacter == 2
    a == 2
    break
elif: selectcharacter == 3
    a == 2
    break

2 个答案:

答案 0 :(得分:1)

我不确定为什么在循环体中两次调用input;让循环条件发挥作用。

select_character = "0"
while select_character not in ["1", "2", "3"]:
    select_character = input("Select your character: ")

select_character = int(select_character)  # If you really want an int

如果您不想显式初始化select_character,请使用带有显式中断的无限循环,并在您调用input后检查 的条件下加以保护。 / p>

while True:
    select_character = input("Select your character:" )
    if select_character in ["1", "2", "3"]:
        break

答案 1 :(得分:0)

不确定变量a的用途是什么,为什么不将其与1进行比较。我认为您需要一个while True循环,并在做出有效响应后立即退出break。用户可以提供一个介于1-3(最佳情况)之间的数字,在这种情况下,它将成功地转换为下面的int并到达break行并退出while循环。如果用户提供的数字超出该范围,则循环将继续要求选择字符。如果用户错误地提供了一个非整数值,则不能将其强制转换为int,并且在尝试时它将引发一个ValueError来尝试将字符串转换为int值。然后,循环将进入except块,并将错误和continue通知用户,这意味着它将返回循环的顶部。

while True:
    selectCharacter = input('Select your character:')
    # input() returns a str, must cast it to an int. 
    # Use try/except block to ensure the user provided an integer
    try:
        selectCharacter = int(selectCharacter)
    except ValueError:
        print('Please enter an integer only!')
        continue
    if selectCharacter >= 1 and selectCharacter < 4:
        print('Character selected')
        break