Python 当输入错误的时间格式时,如何循环代码一次?

Python 当输入错误的时间格式时,如何循环代码一次?,python,Python,我正在编写一个工资计算器,在解决了如何验证输入格式为HH:MM之后,我很难记住如何实际循环代码一次,然后等待另一个用户输入。谢谢你的帮助 代码如下 while not bool(re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", wed_start)): print("Please only use the HH:MM time format.") wed_fin = input(ask_finish() +

我正在编写一个工资计算器,在解决了如何验证输入格式为HH:MM之后,我很难记住如何实际循环代码一次,然后等待另一个用户输入。谢谢你的帮助

代码如下

while not bool(re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", wed_start)):
    print("Please only use the HH:MM time format.")
wed_fin = input(ask_finish() + ' Wednesday?')
fmt = '%H:%M'
wed_hours = datetime.strptime(wed_fin, fmt) - datetime.strptime(wed_start, fmt)
print(tell_work(), wed_hours, 'hours on Wednesday.')

只是一个循环和中断?下面是一个相当愚蠢但有效的实现示例:

import re

attempts = 2

for a in range(attempts):
    wed_start  = input('give me HH:MM : ')
    validation = re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", wed_start)
    if validation: break
    if a == 1:
        print('well, maybe next time')
        exit()
    else:
        print('try again, bud')

print('ok, here we go...')
# do stuff
或同一算法的简短变体:

import re

for a in range(2):
    wed_start = input('HH:MM: ')
    if re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", wed_start): break
    if a == 1: exit()

# do stuff

我想你的答案是正确的,但我不记得它有一个只有一次重试的案例。如果这足够的话,你可以投票结束你的问题作为一个重复,我们也会。老实说,当我最初发现它时,我发现这个线索很难遵循。如果你建议我在那里找到我的答案,那么我相信你比我更清楚,我会重复回答这个问题。谢谢你的帮助。。。。您应该尝试使其中一些场景适应您的需求。我想象函数中的问题/提示;这个函数在一个循环中被限制在两个迭代中。我将给出一个Go,Calrsif如果你找到一些足够独特的东西,考虑添加一个问题的答案——也许是一个有点像泛型的答案,比如用<代码> n=2 < /代码>的例子将问题限制为<代码> n>代码>响应。然后你和我们可以投票关闭这一个作为一个副本。这真的很好,谢谢你,这是我一直在寻找的。嘿,我已经添加到我的代码,它的工作非常好,谢谢你。还有一个问题,据我所知,可以定义这是一个函数,对吗?如果我在每天的开始和结束时都使用它,那么我的代码很快就会膨胀。如果您想不止一次地使用它,那么创建函数是非常有意义的。假设它可以返回经过验证的字符串,或者返回False(以防用户输入错误)。你需要弄清楚它需要一些参数吗?尝试次数?验证模板?输入“问候语”?还是什么都没有?