Python - 使用while循环重复代码

时间:2017-04-07 01:23:03

标签: python loops repeat

所以这是我的问题。我有一大块输入代码,如果输入错误我需要重复。到目前为止,这就是我所拥有的(注意这只是一个示例代码,我在打印和输入中的实际值是不同的:

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次,并且它太大而且不切实际。

感谢您的协助!

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")