[英]Accept number with “/” from input user and exception when it is a letter in python
下面的代码适用于该数字,但当我在输入中添加破折号并且我不知道如何让它接受它时将不起作用。
我认为异常有效,但我不知道它是否正常工作,因为如果它是一封信,我想出错。
我的问题是如何让它接受输入中带有数字的破折号,并检查用户是否输入了字母而不是数字。
def main(day_number,month_number,month_name,date_,month_list,date_1,year,fulldate):
day_number = 0
month_number = 0
month_name = ''
date_ = ''
month_list = ['January','February','March',
'April','May','June','July',
'August','September','October',
'November','December']
date_ = input("Enter a date in the format mm/dd/yyyy: ")
while True:
try:
float(date_)
date_1= date_.split('/')
month_number = (date_1[0])
day_number = date_1[1]
year = date_1[2]
month_name = month_list[month_number - 0]
fulldate = month_name + ' ' + day_number + ',' + year + '.'
print(fulldate)
break
except ValueError:
print("""ops it's not a number, please try again""")
date_ = input("Enter a date in the format mm/dd/yyyy: ")
break
main("day_number","month_number","month_name","date_","month_list","date_1","year","fulldate")
如何创建一个采用日期格式并不断提示用户的 function,直到他们使用datetime. strftime ( format )
datetime. strftime ( format )
和datetime. strptime ( date_string, format )
datetime. strptime ( date_string, format )
:
from datetime import datetime
def get_valid_date_input(prompt, format):
now = datetime(datetime.today().year, 1, 1)
prompt_with_example = f"{prompt}, e.g., {now.strftime(format)}:\n"
date_ = None
while True:
try:
date_ = datetime.strptime(input(prompt_with_example), format)
break
except:
print("Error: Input did not match required format, try again...")
return date_
def suffix(d):
# From https://stackoverflow.com/a/5891598/6328256
return 'th' if 11 <= d <= 13 else {
1: 'st',
2: 'nd',
3: 'rd'
}.get(d % 10, 'th')
def main():
date_format = "%m/%d/%Y"
date_ = get_valid_date_input(f"Enter a date in the format {date_format}",
date_format)
print(f"You entered a valid date: {date_.date()}")
full_month, day_num, year = date_.strftime("%B"), date_.day, date_.year
print(f"{full_month} {day_num}{suffix(day_num)}, {year}")
if __name__ == '__main__':
main()
示例用法:
Enter a date in the format %m/%d/%Y, e.g., 01/01/2020:
11/26/20
Error: Input did not match required format, try again...
Enter a date in the format %m/%d/%Y, e.g., 01/01/2020:
26/11/2020
Error: Input did not match required format, try again...
Enter a date in the format %m/%d/%Y, e.g., 01/01/2020:
11/26/2020
You entered a valid date: 2020-11-26
November 26th, 2020
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.