Python 为什么它总是问我输入是否正确? def main(): 月份=0 日期=0 年份=0 日期=[月、日、年] 用户=输入(“根据年月日输入:”) user=user.split(“/”) 月=用户[0] 日期=用户[1] 年份=用户[2] 当整数(月)>12或整数(月)31或整数(日期)15或整数(年)2015。请帮忙

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循环本身。正如的评论所指出的,您忘记了更新月份、日期和

当它是正确的时候,我总是不正确。请帮忙。我正在尝试让用户的输入与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()