Python 如何在新条件下停止每次打印以前的if-else语句?

Python 如何在新条件下停止每次打印以前的if-else语句?,python,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

我制作这个程序是为了根据你的生日来确定你的年龄

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!!!")
当md和dd都小于0时,我想让最后一个if-else条件以独占方式打印“生日快乐”,但实际情况是,由于前面的条件,输出的形式如下:

('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!!!")

我该怎么纠正呢?

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

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
,它是
else
if
的组合:它仅在前面的
if
(或
elif
)条件为false且其自身条件为true时执行。在上面的代码中,我们保证只打印一条消息

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