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
进行一些更复杂的计算,以便在所有情况下都能正常工作