所以这是我的问题。我有一大块输入代码,如果输入错误我需要重复。到目前为止,这就是我所拥有的(注意这只是一个示例代码,我在打印和输入中的实际值是不同的:
input_var_1 = input("select input (1, 2 or 3)")
if input_var_1 == ("1"):
print ("you selected 1")
elif input_var_1 == ("2")
print ("you selected 2")
elif input_var_1 == ("3")
print (you selected 3")
else:
print ("please choose valid option")
我在ELSE之后添加什么,以便第一个IF和最后一个ELIF之间的所有代码重复进行,直到输入有效为止?我现在所拥有的只是重复代码3次,但问题在于它只重复输入请求3次,并且它太大而且不切实际。
感谢您的协助!
答案 0 :(得分:2)
如 umutto 所提及的,您可以使用while
循环。但是,不是对每个有效输入使用break
,而是在结尾处有一个中断,您可以使用continue
跳过不正确的输入以保持循环。如下
while True:
input_var_1 = input("select input (1, 2 or 3): ")
if input_var_1 == ("1"):
print ("you selected 1")
elif input_var_1 == ("2"):
print ("you selected 2")
elif input_var_1 == ("3"):
print ("you selected 3")
else:
print ("please choose valid option")
continue
break
我还清除了代码中的一些其他语法错误。经过测试。
答案 1 :(得分:1)
一个非常有效的代码将是
input_values=['1','2','3']
while True:
input_var_1 = input("select input (1, 2 or 3): ")
if input_var_1 in input_values:
print ("your selected input is "+input_var_1)
break
else:
print ("Choose valid option")
continue
我提出了这个答案,因为我认为python是用简约代码完成的。
答案 2 :(得分:0)
与mani的解决方案一样,除了在这种情况下continue
的使用是多余的。
此外,这里我允许int()float()或string()输入规范化为int()
while 1:
input_var_1 = input("select input (1, 2, or 3): ")
if input_var_1 in ('1','2','3',1,2,3):
input_var_1 = int(input_var_1)
print 'you selected %s' % input_var_1
break
else:
print ("please choose valid option")