Python 而循环中断得太早。 导入日期时间 def main(): 日期\字符串=输入('输入日期,格式为mm/dd/yy:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 当月份12时: 打印('输入的月份超出范围') 日期\字符串=输入('以mm/dd/yy格式重新输入日期:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 当第1天或第31天时: 打印('输入的日期超出范围') 日期\字符串=输入('以mm/dd/yy格式重新输入日期:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 当一年13: 打印(‘年份不代表2013’) 日期\字符串=输入('以mm/dd/yy格式重新输入日期:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 打印(月、日、年) main()

Python 而循环中断得太早。 导入日期时间 def main(): 日期\字符串=输入('输入日期,格式为mm/dd/yy:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 当月份12时: 打印('输入的月份超出范围') 日期\字符串=输入('以mm/dd/yy格式重新输入日期:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 当第1天或第31天时: 打印('输入的日期超出范围') 日期\字符串=输入('以mm/dd/yy格式重新输入日期:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 当一年13: 打印(‘年份不代表2013’) 日期\字符串=输入('以mm/dd/yy格式重新输入日期:') 日期列表=日期字符串。拆分(“/”) 月=int(日期列表[0]) day=int(日期列表[1]) 年份=整数(日期列表[2]) 打印(月、日、年) main(),python,loops,while-loop,Python,Loops,While Loop,当我运行该程序并输入无效的月份和天数时,该程序将一直进行到年度验证,并将继续发布该提示,即使输入对其他输入之一无效。重新开始 你不需要三个小的while循环。您需要一个大的while循环(而不是success)和三个if语句来进行三次检查,如果其中任何一次失败,请将success设置为false。您可以采用不同的安排: import datetime def main(): date_string = input('Enter a date in mm/dd/yy format: '

当我运行该程序并输入无效的月份和天数时,该程序将一直进行到年度验证,并将继续发布该提示,即使输入对其他输入之一无效。

重新开始


你不需要三个小的while循环。您需要一个大的while循环(
而不是success
)和三个if语句来进行三次检查,如果其中任何一次失败,请将success设置为false。

您可以采用不同的安排:

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()
为True时:
日期\字符串=输入('输入日期,格式为mm/dd/yy:')
日期列表=日期字符串。拆分(“/”)
月=int(日期列表[0])
day=int(日期列表[1])
年份=整数(日期列表[2])
如果月份<1或月份>12:
打印('输入的月份超出范围')
elif日<1日或日>31日:
打印('输入的日期超出范围')
伊里夫年!=13:
打印(‘年份不代表2013’)
其他:
打破
打印(月、日、年)

您的代码需要一个函数来读取和拆分值。您还存在一个问题,即如果用户输入了有效的月号和无效的日号,则他们可以使用无效的月号和有效的日号重新输入数据。等等。如果您输入“17/20/2013”,您的代码运行良好,这是预期的吗?谢谢大家的快速反馈。我看到了我的错误。
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)