此循环不起作用,因为它与我所做的与此相同的另一个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
答案 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