首页 > 解决方案 > 输入错误的时间格式时如何循环代码一次?

问题描述

我正在编写一个工资计算器,在弄清楚如何验证输入格式为 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.')

标签: python

解决方案


只是一个循环和中断?这是非常愚蠢但有效的实现示例:

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

推荐阅读