如何停止以前的ifelse语句在新条件下每次打印?

2024-04-18 06:06:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我做这个节目是为了根据你的生日来确定你的年龄。你知道吗

print"Let's find your exact age using your birthday!"
d1=int(input("Enter your date of birth:-"))
d1=int(d1)
m1=int(input("Enter your month of birth:-"))
m1=int(m1)
y1=int(input("Enter your year of birth:-"))
y1=int(y1)
d2=int(input("Enter todays date:-"))
d2=int(d2)
m2=int(input("Enter the month we are in:-"))
m2=int(m2)
y2=int(input("Enter the year right now:-"))
y2=int(y2)
rd= y2-y1
md= abs(m2-m1)
dd= abs(d2-d1)
if md > 0:
    print("You will be", rd,"years old in",md, "months and", dd,"days!")
else:
    print("You will be", rd,"years old in", dd, "days")
if dd > 0:
    print("You will be", rd,"years old in",md, "months and", dd,"days!")
else:
    print("You will be", rd,"years old in",md,"months.")
if (md > 0 and
    dd > 0):
    print("You will be", rd,"years old in",md, "months and", dd,"days!")
else:
    print("You are",rd, "years old! And it's your birthday! Happy       Birthdaay!!!")

我想让最后一个if else条件在md和dd都小于0时打印“生日快乐”,但实际情况是,由于前面的条件,输出形式如下:

('You will be', 16, 'years old in', 0, 'days')
('You will be', 16, 'years old in', 0, 'months.')
('You are', 16, "years old! And it's your birthday! Happy Birthdaay!!!")

我该怎么纠正这个问题?你知道吗


Tags: inyouinputyourrdbemdwill
1条回答
网友
1楼 · 发布于 2024-04-18 06:06:19

你得重新考虑一下你的逻辑。有一种方法可以满足您的需求:

if md == 0 and dd == 0:
        print "You are", rd, "years old! And it's your birthday! Happy Birthdaay!!!"
elif md == 0:
        print "You will be", rd, "years old in", dd, "days"
elif dd == 0:
        print "You will be", rd, "years old in", md, "months"
else:
        print "You will be", rd, "years old in", md, "months and", dd, "days!"

它使用elif,它是elseif的组合:它只在前面的if(或elif)条件为false并且它自己的条件为true时执行。在上面的代码中,我们保证只打印一条消息。你知道吗

旁注:正如你可能已经注意到的,这个程序在计算某人生日的时间方面不太管用。您必须对rdmddd进行一些更复杂的计算,以便在所有情况下都能正常工作。你知道吗

相关问题 更多 >