2017-01-21 7 views
1

ムービーチケット:映画館では、年齢によって違うチケット価格が課金されます。 3歳未満の場合、チケットは無料です。 3と12の間であれば、チケットは10ドルです。 12歳以上の場合は15ドルです。ユーザーに年齢を問い合せ、映画チケットの費用を伝えるループを作成します。Pythonでは、else-blockをさらにブロックできますか?

私はこのプログラムが終了値を持つことを望みました。私は終了値として0を使用することができましたが、私は 'quit'を使いたいと思っていました。

prompt = "What is your age? " 
prompt += "\nEnter 'quit' to close program." 

age = 0 

while True: 


    age = raw_input(prompt) 
     if age == 'quit': 
      break 
     else: 
      age = int(age) 
      if age < 3: 
       print("The movie ticket is FREE for you.") 
      elif 3 <= age < 12: 
       print("The movie ticket is $10 for you.") 
      elif age >= 12: 
       print("The movie ticker is $15 for you.") 

答えて

6

else句が必要ではないことを指摘したいと思います。 breakはループの残りの部分で継続するのではなく、ループを終了するため、残りの条件文を以前のインデントレベルに含めることができます。

のではなく単に

if age == 'quit': 
     break 
    else: 
     age = int(age) 

if age == 'quit': 
     break 

    age = int(age) 

それは、ここでは明確ではなかった場合、その変化に対応し、プログラム全体です:

prompt = "What is your age? " 
prompt += "\nEnter 'quit' to close program." 

while True: 

    age = raw_input(prompt) 
    if age == 'quit': 
     break 

    age = int(age) 
    if age < 3: 
     print("The movie ticket is FREE for you.") 
    elif 3 <= age < 12: 
     print("The movie ticket is $10 for you.") 
    elif age >= 12: 
     print("The movie ticker is $15 for you.") 

私はまた、無用の割り当てを削除:age = 0その値はage = raw_input(prompt)に置き換えられます。

+0

ありがとうございます! elseブロックを使用しない場合、コードの残りの部分についてはどうすればよいですか? –

2

はい、if文をネストすることはできますが、私はいつもより良い方法を見つけることを試みます。この場合、while文の条件部分を使用することができます。今

age = 0 
while age != "quit": 
    age = raw_input(prompt) 
    age = int(age) 
    if age < 3: 
     print("The movie ticket is FREE for you.") 
    elif 3 <= age < 12: 
     print("The movie ticket is $10 for you.") 
    elif age >= 12: 
     print("The movie ticker is $15 for you.") 

限りage"quit"に等しくないようにするためのコードがループ。

1

try:を使用すると、整数以外の値を入力してスクリプトのクラッシュを回避できます。

prompt = "What is your age? [quit to Exit the program] : " 
while True: 
    age = raw_input(prompt) 
    if age == 'quit': 
     break 
    try: 
     age = int(age) 
     if age < 3: 
      print("The movie ticket is FREE for you.") 
     elif 3 <= age < 12: 
      print("The movie ticket is $10 for you.") 
     elif age >= 12: 
      print("The movie ticker is $15 for you.") 
    except: 
     print 'Invalid Age entered !!!' 
     pass 
関連する問題