2017-01-12 5 views
0

私はあなたの誕生日に基づいてあなたの年齢を見つけるためのこのプログラムを作った。新しい条件で毎回印刷するために前のif-elseステートメントを停止する方法は?

私はMDとDDの両方が0未満ですが、起こっていただきましたが、理由は、前の条件の出力が形になっていることであるとき、もっぱら最後のif-else条件印刷「ハッピーバースデー」を作るためにしたかった
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!!!") 

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

これを修正するにはどうすればよいですか?

答えて

0

ロジックを少し考え直さなければなりません。ここであなたが欲しいものを行うための一つの方法だ:

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!" 

これはelseifの組み合わせである、elifを使用しています。前のif(またはelif)条件が偽だったし、独自の条件が真である場合にのみ実行されます。上記のコードでは、1つのメッセージしか出力されないことが保証されています。

サイドノート:気づいたことがあるように、このプログラムは誰かの誕生日までの時間を計算するのにはあまり効果がありません。どんな場合でも動作させるには、rdmd、およびddの複雑な計算を行う必要があります。

関連する問題