Python 如果第一个输入无效,则提示用户输入其他内容
我对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
[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)