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() + ' 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
推荐阅读
- angular - 在 ngFor 中创建组件时,Angular ngOnInit 从未执行
- javascript - Intersection Observer 类似于 api 的固定点
- javascript - JavaScript 在 ASP .Net MVC 实体框架中不起作用
- php - 使用 Woocommerce 挂钩从匹配的订单项元值中显示选定的 BACS 帐户
- sql - 在 and SQL 中计算 and
- r - topgo lapply 而不是 R 中的 for 循环
- python - AttributeError:模块“h5py”没有属性“文件”
- ruby-on-rails - 使用 ssl 运行 rails 服务器?(彪马)
- r - 右连接 R 中的两个数据集不适用于 dplyr 和 base R
- excel - 选择范围并复制