我正在尝试为课程创建这个程序,但我有一个小问题。我似乎总是遇到循环问题!如果您按要求输入日期,该程序将起作用,但如果输入错误,我无法返回并再次询问用户日期。我创建了True / False布尔值,但它似乎不起作用。我们还没有学习如何导入某些日期模块并进行转换,因此我手动转换月份。
说明:
一个。从用户输入数字格式的日期,例如MM / DD / YY。
B中。检查用户输入的月份。如果大于12或小于1,则发出错误消息并再次请求输入。
℃。对日期和年份执行类似的验证测试。年必须 是2013年。(任何其他年份无效)。此外,年份必须只有两位数。
d。验证完所有输入后,以长日期格式输出字符串。因此,在2015年6月1日输入的字符串将在2015年6月1日输出。
def main():
try_again = True
while try_again == True:
date_string = input("Please enter a date in the format 'mm/dd/yy': ")
date_list = date_string.split('/')
month = date_list[0]
day = date_list[1]
year = date_list[2]
if month > "12" or month < "01":
print('Error, please re-enter the date!')
if year != '13':
print('Error! The year must be 2013')
if len(year) > 2:
print('Error! The year can only be 2 digits long!')
else:
print_date(month, day, year)
try_again = False
def print_date(month, day, year):
# Convert to 2013 because 2013 is the only valid year
# for this program.
if year == '13':
year = '2013'
# Convert the number values to the actual month.
if month == '01':
month = 'January'
if month == '02':
month = 'February'
if month == '03':
month = 'March'
if month == '04':
month = 'April'
if month =='05':
month = 'May'
if month == '06':
month = 'June'
if month == '07':
month = 'July'
if month == '08':
month = 'August'
if month == '09':
month = 'September'
if month =='10':
month = 'October'
if month == '11':
month = 'November'
if month == '12':
month = 'December'
# Print the date in the correct format
print(month + " " + day + ',' + " " + year)
main()
答案 0 :(得分:1)
else
仅适用于最后一个if
语句,要么为每个条件添加continue
,要么将中间if
更改为elif
:
if month > "12" or month < "01":
print('Error, please re-enter the date!')
continue #back to beginning of loop
if year != '13':
print('Error! The year must be 2013')
continue #back to beginning of loop
if len(year) > 2:
print('Error! The year can only be 2 digits long!')
continue #back to beginning of loop
#else: #doesn't really change anything any more
#only happens if none of the continue s happend
print_date(month, day, year)
try_again = False
或elif
s:
if month > "12" or month < "01":
print('Error, please re-enter the date!')
elif year != '13':
print('Error! The year must be 2013')
elif len(year) > 2:
print('Error! The year can only be 2 digits long!')
else:
print_date(month, day, year)
try_again = False
这样只会发生其中一个条件。