虽然循环中断还为时过早

虽然循环中断还为时过早

import datetime


def main():
    date_string = input('Enter a date in mm/dd/yy format: ')
    date_list = date_string.split('/')
    month = int(date_list[0])
    day = int(date_list[1])
    year = int(date_list[2])
    while month < 1 or month > 12:
        print('Month entered is out of range')
        date_string = input('Re-enter a date in mm/dd/yy format: ')
        date_list = date_string.split('/')
        month = int(date_list[0])
        day = int(date_list[1])
        year = int(date_list[2])
    while day < 1 or day > 31:
        print('Day entered is out of range')
        date_string = input('Re-enter a date in mm/dd/yy format: ')
        date_list = date_string.split('/')
        month = int(date_list[0])
        day = int(date_list[1])
        year = int(date_list[2])
    while year != 13:
        print('Year does not represent 2013')
        date_string = input('Re-enter a date in mm/dd/yy format: ')
        date_list = date_string.split('/')
        month = int(date_list[0])
        day = int(date_list[1])
        year = int(date_list[2])
    print(month, day, year)
main()


当我运行该程序并输入无效的月份和日期时,它会向下进行直到年份验证,即使输入对于其他输入之一无效,它也会继续发布该提示。

最佳答案

您可以对此进行不同的安排:

while True:
    date_string = input('Enter a date in mm/dd/yy format: ')
    date_list = date_string.split('/')
    month = int(date_list[0])
    day = int(date_list[1])
    year = int(date_list[2])
    if month < 1 or month > 12:
        print('Month entered is out of range')
    elif day < 1 or day > 31:
        print('Day entered is out of range')
    elif year != 13:
        print('Year does not represent 2013')
    else:
        break
print(month, day, year)

关于python - 虽然循环中断还为时过早。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23332310/

10-10 17:30