def main():
month = 0
date = 0
year = 0
date = [month, date, year]
user = input("Enter according to mm/dd/yy:")
user = user.split('/')
month = user[0]
date = user[1]
year = user[2]
while int(month) > 12 or int(month) < 1 :
print("Month is incorrect.")
user = input("Enter according to mm/dd/yy:")
while int(date) > 31 or int(date) < 0:
print("Date is incorrect.")
user = input("Enter according to mm/dd/yy:")
while int(year) > 15 or int(year) < 15:
print("Year is incorrect.")
user = input("Enter according to mm/dd/yy:")
如果月份不对,我会继续纠正错误。请帮忙。我试图让用户的输入与mm / dd / yy的正确形式相匹配。我试图转换yy - &gt; 2015.请帮忙。
答案 0 :(得分:2)
您的代码中存在错误。 假设我的输入是&#34; 15/30/15&#34;,那么它表示不正确的月份并尝试以格式&#34; mm / dd / yy&#34;来获取用户输入,但现在用户不是基于&#39; \ _分离,所以while循环一直运行直到用户[0]被分配到新月。错误的日期和年份也会发生此错误。 要修复它,只需调用用户输入函数并将用户拆分为while循环本身。
答案 1 :(得分:1)
就像@nneonneo的评论所指出的那样,您忘了更新month
,date
和year
。
这会导致你的while循环只使用这些字段的第一个记录值。
只需在每个while循环结束时添加此代码即可解决当前问题:
user = input("Enter according to mm/dd/yy:")
month,date,year = user.split('/')
正如您可能已经猜到的那样,以上是您的问题中这段代码的更好实现:
user = input("Enter according to mm/dd/yy:")
user = user.split('/')
month = user[0]
date = user[1]
year = user[2]
这样可以减少每个while循环中的混乱。
此外,假设您当前的缩进是正确的,您的代码将不会为您提供所需的输出,因为它不考虑用户以所有3个无效字段开头的情况:month
,{{1} }和date
。如果用户首先输入正确的月份,他将能够在以后输入无效月份并仍然产生输出。
您应该使用year
块,而不是使用三个while循环。这将确保您得到正确的答案:
if-elif-else