擅长:python、mysql、java
<p>您可以使用一个变量来跟踪哪个问题到期,如下所示:</p>
<pre><code>def ask(question, validator):
a = input(question)
return a if validator(a) else None
progress = 0
while progress < 2:
if progress == 0:
ok = a = ask("What is your name?: ", lambda a: a in ["Sam"])
else:
ok = b = ask("How old are you?: ", lambda b: b in [28])
if ok == None:
print ("Error, try again.")
progress += int(ok != None)
</code></pre>
<h3>备选方案</h3>
<p>您可以将答案初始化为<code>None</code>,然后继续,直到最后一个答案不是<code>None</code>,同时询问仍然没有答案值的问题。你知道吗</p>
<p>如果答案验证失败,则可能引发异常:</p>
<pre><code>def ask(question, validator):
a = input(question)
if not validator(a):
raise ValueError
return a
progress = 0
a = None
b = None
while b == None:
try:
if a == None: a = ask("What is your name?: ", lambda x: x in ["Sam"])
if b == None: b = ask("How old are you?: ", lambda x: x in [28])
except ValueError:
print ("Error, try again")
print (a, b)
</code></pre>