我正在编写一个程序,接受用户以am / pm格式输入的时间。我想确保用户输入其他内容,它会带来错误,而不仅仅是程序崩溃。 我所说的是,用户必须以HH:MM am / pm格式输入时间。例如“下午2:00”或“上午11:00”以及其他任何其他事情都要求出错。
我能做的最好的事情是
print("Make all inputs using the format 'hh:mm am/pm' e.g 10:00 am ... and add 0 before single numbers e.g 3 ==> 03" )
while True:
start = input("At what is the start time?: ")
end = input("At what is the end time?: ")
if len(start) != 8:
print("error! wrong value/format entered as the start time")
elif len(end) != 8:
print("error! wrong value/format entered as the end time")
else:
break
答案 0 :(得分:0)
以下是两种方法,我个人更喜欢日期转换方法。
我会检查是否可以将它们转换为日期Python对象。我使用%H:%M %p
,它是小时:分钟上午/下午(如你的提示所指定)。
import time
print("Make all inputs using the format 'hh:mm am/pm' e.g 10:00 am ... and add 0 before single numbers e.g 3 ==> 03" )
while True:
start = input("At what is the start time?: ")
end = input("At what is the end time?: ")
try:
time.strptime(start,'%H:%M %p')
time.strptime(end,'%H:%M %p')
print("Good Strings")
except:
print("Bad Strings")
我使用以下正则表达式:
r"^(?:1?[012]|[0-9]):[0-5][0-9]\s*(?:am|pm)$"i
这是Regex101: