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)