这个循环不像我想要的那样循环。我希望它循环直到有一个有效的inpu

2024-10-03 19:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

这个循环和另一个循环不一样,而我做的循环和这个几乎一样。我希望它循环,直到我输入一个有效的答案。它第一次问我,如果我弄错了,它会再问我一次,但之后就不再重复了。除非输入有效的输入,否则变量“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

Tags: and答案代码编辑inputyourif网站
2条回答

不确定变量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

我不知道为什么在循环体中调用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后检查的条件来保护

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

相关问题 更多 >