Python 如果第一个输入无效,则提示用户输入其他内容

Python 如果第一个输入无效,则提示用户输入其他内容,python,input,Python,Input,我对Python非常陌生,所以请原谅我的新手问题。我有以下代码: [a while loop starts] print 'Input the first data as 10 characters from a-f' input1 = raw_input() if not re.match("^[a-f]*$", input1): print "The only valid inputs are 10-character strings containing letters a-f

我对Python非常陌生,所以请原谅我的新手问题。我有以下代码:

[a while loop starts]

print 'Input the first data as 10 characters from a-f'

input1 = raw_input()
if not re.match("^[a-f]*$", input1):
    print "The only valid inputs are 10-character strings containing letters a-f"
    break
else:
[the rest of the script]

如果我想,而不是中断循环并退出程序,将用户发送回原始提示,直到他们输入有效数据,我将编写什么来代替中断?

要继续下一个循环迭代,可以使用

我通常会将输入分解为一个专用函数:

def get_input(prompt):
    while True:
        s = raw_input(prompt)
        if len(s) == 10 and set(s).issubset("abcdef"):
            return s
        print("The only valid inputs are 10-character "
              "strings containing letters a-f.")

要继续下一个循环迭代,可以使用

我通常会将输入分解为一个专用函数:

def get_input(prompt):
    while True:
        s = raw_input(prompt)
        if len(s) == 10 and set(s).issubset("abcdef"):
            return s
        print("The only valid inputs are 10-character "
              "strings containing letters a-f.")
轻微替代:

input = ''
while len(input) != 10 or not set(input).issubset('abcdef'):
    print("Input initial data.  Must enter 10 characters, each being a-f."
    input = raw_input()
或者,如果您想将其分解为一个函数(此函数对于此用途来说是过度的,但对于特殊情况,整个函数是次优的):

轻微替代:

input = ''
while len(input) != 10 or not set(input).issubset('abcdef'):
    print("Input initial data.  Must enter 10 characters, each being a-f."
    input = raw_input()
或者,如果您想将其分解为一个函数(此函数对于此用途来说是过度的,但对于特殊情况,整个函数是次优的):


只是不要使用
break
?(取决于脚本的其余部分)。@Felix:不过,他仍然需要将实际代码包装到
else
分支中,这可以通过使用
continue
来防止。只是不要使用
break
?(取决于脚本的其余部分)。@Felix:他仍然需要将实际代码包装到
else
分支中,但是,使用
continue
可以防止这种情况。正如Niklas指出的,如果使用
continue
,那么值得注意的是,
else
条件也可以被删除。@Sven Marnach“PROMPT”在原始输入中有什么用??请澄清它,我也在新的python@VarunChhangani:等待用户输入前打印的提示;请参阅。正如Niklas指出的,值得注意的是,如果使用了
continue
,则
else
条件也可以被删除。@Sven Marnach“PROMPT”在原始输入中有什么用途??请澄清它,我也在新的python@VarunChhangani:等待用户输入前打印的提示;看。
def validator(input):
    return len(input) == 10 and set(input).subset('abcdef')

input_data = prompt_for_input('Please input initial data.  Must enter 10 characters, each being a-f.', validator, True)