Python 为什么它总是问我输入是否正确? def main(): 月份=0 日期=0 年份=0 日期=[月、日、年] 用户=输入(“根据年月日输入:”) user=user.split(“/”) 月=用户[0] 日期=用户[1] 年份=用户[2] 当整数(月)>12或整数(月)31或整数(日期)15或整数(年)2015。请帮忙
当它是正确的时候,我总是不正确。请帮忙。我正在尝试让用户的输入与mm/dd/yy的正确形式相匹配。我正试图转换yy->2015。请帮忙 您的代码中有一个bug。 假设我的输入为“15/30/15”,则表示月份不正确,并尝试以“mm/dd/yy”格式获取用户输入,但现在用户没有基于“\”进行拆分,因此while循环将一直运行,直到用户[0]被分配到新的月份。错误的日期和年份也会发生此错误。 要修复它,只需调用用户输入函数并将用户拆分到while循环本身。正如的评论所指出的,您忘记了更新Python 为什么它总是问我输入是否正确? def main(): 月份=0 日期=0 年份=0 日期=[月、日、年] 用户=输入(“根据年月日输入:”) user=user.split(“/”) 月=用户[0] 日期=用户[1] 年份=用户[2] 当整数(月)>12或整数(月)31或整数(日期)15或整数(年)2015。请帮忙,python,while-loop,nested,Python,While Loop,Nested,当它是正确的时候,我总是不正确。请帮忙。我正在尝试让用户的输入与mm/dd/yy的正确形式相匹配。我正试图转换yy->2015。请帮忙 您的代码中有一个bug。 假设我的输入为“15/30/15”,则表示月份不正确,并尝试以“mm/dd/yy”格式获取用户输入,但现在用户没有基于“\”进行拆分,因此while循环将一直运行,直到用户[0]被分配到新的月份。错误的日期和年份也会发生此错误。 要修复它,只需调用用户输入函数并将用户拆分到while循环本身。正如的评论所指出的,您忘记了更新月份、日期和
月份
、日期
和年份
这将导致while循环仅使用这些字段的第一个记录值
只需在每个while循环的末尾添加以下代码,即可解决您当前的问题:
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:")
正如您可能已经猜到的,上面是您问题中这段代码的更好实现:
user = input("Enter according to mm/dd/yy:")
month,date,year = user.split('/')
这将减少while循环中的混乱
此外,假设您当前的缩进是正确的,您的代码将不会提供您所需的输出,因为它没有考虑用户以所有3个无效字段开始的情况:月
、日期
和年
。如果用户先输入正确的月份,那么他可以在以后输入无效的月份,并且仍然生成输出
您应该使用if-elif-else
块,而不是使用三个while循环。这将确保您得到正确的答案:
user = input("Enter according to mm/dd/yy:")
user = user.split('/')
month = user[0]
date = user[1]
year = user[2]
def main():
用户=输入(“根据年月日输入:”)
月、日、年=user.split(“/”)
尽管如此:
如果整数(月)>12或整数(月)<1:
打印(“月份不正确”)
elif int(日期)>31或int(日期)<0:
打印(“日期不正确”)
elif int(年)>15或int(年)<15:
打印(“年份不正确”)
其他:
打破
用户=输入(“根据年月日输入:”)
月、日、年=user.split(“/”)
main()
请在这个问题上添加一个语言标签。您不更新月份
、日期
或年份
…您好!你能把代码写出来让我看看吗?我还是python新手,所以有点困惑。谢谢,我刚才试过这个。但它给出了今年的错误。ValueError:int()的文本无效,以10为基数:'/'@lastdancestop您可能没有正确地分割输入,只有在无法转换为类型int
的输入上尝试使用int()
方法时,才会出现该错误。例如,当月份等于“32/”
或其他值时,您可能已经执行了int(month)
def main():
user = input("Enter according to mm/dd/yy:")
month,date,year = user.split('/')
while True:
if int(month) > 12 or int(month) < 1 :
print("Month is incorrect.")
elif int(date) > 31 or int(date) < 0:
print("Date is incorrect.")
elif int(year) > 15 or int(year) < 15:
print("Year is incorrect.")
else:
break
user = input("Enter according to mm/dd/yy:")
month,date,year = user.split('/')
main()