2016-09-21 17 views
0

ユーザが価格を入力し、プログラムが入力に基づいて送料を出力する小さなプログラムで作業しています。ユーザの入力に応じて適切なelse文を選択する

#Initilaize variables 

lowUS = 6.00; 
medUS = 9.00; 
highUS = 12.00; 
lowCan = 8.00; 
medCan = 12.00; 
highCan = 15.00; 

#Greet user and ask for input 
print("Welcome to Ben's shipping calculator!"); 
print("We will calculate your shipping cost for you!"); 


orderTotal = float(input("Please input your total amount.")); 
country = input("In which country do you reside? Please type C for Canada or U or USA. "); 

#Validate input 
while country not in {'u', 'c', 'C', 'U'}: 
    print ("Invalid input. Please try again. ") 
    country = input("In which country do you reside? Please type C for Canada or U or USA. "); 

#Determine how much the shipping fee is 
if country == 'U' or country == 'u': 
    if orderTotal <= 50.00: 
     if orderTotal > 50.00 and orderTotal <= 100.00: 
      if orderTotal > 100.00 and orderTotal <= 150.00: 
       if orderTotal > 150.00: 
        print("Your shipping is free and your grand total is", orderTotal) 
       else: 
        print("Your shipping fee is: ", highUS); 
        orderTotal = (orderTotal + highUS); 
      else: 
       print("Your shipping fee is: ", medUS); 
       orderTotal = (orderTotal + medUS); 
     else: 
      print("Your shipping fee is: ", lowUS); 
      orderTotal = (orderTotal + lowUS); 

elif country == 'c' or country == 'C': 
    if orderTotal <= 50.00: 
     if orderTotal > 50.00 and orderTotal <= 100.00: 
      if orderTotal > 100.00 and orderTotal <= 150.00: 
       if orderTotal > 150.00: 
        print("Your shipping is free and your grand total is", orderTotal) 
       else: 
        print("Your shipping fee is: ", highCan); 
        orderTotal = (orderTotal + highCan); 
      else: 
       print("Your shipping fee is: ", medCan); 
       orderTotal = (orderTotal + medCan); 
     else: 
      print("Your shipping fee is: ", lowCan); 
      orderTotal = (orderTotal + lowCan); 

print("Your grand total is: $", orderTotal); 

私はPythonとプログラミングに非常に新しいですし、私は、これはそれで行くには良い方法であるかどうかわからないんだけど、私はそれを試してみるだろうと思ったので、私はのif-else文を学んでいます。これまでは、金額に「50」を入力した場合にのみ機能します。それは "50"のためだけに国に基づいて計算されます。誰かが助けて説明することができれば、どこが間違っているのか分かりません。

+0

あなたの最初の 'if'は50以下の場合にのみ入力されます。次のチェックは50を超えることができない場合です - そのブロックは決して実行されません。 'else'節は実行可能な唯一のものです。 –

+0

Pythonは改行の他に行終止符がありません。セミコロンはまったく必要ありません。これはCではありません! (またはJava、JavaScript、またはその他のもの) – MattDMo

答えて

1

あなたの最初のifは、50以下の場合にのみ入力されます。次のチェックは、50を超えることができない場合です。ブロックが実行されないように... elseあなたが入れ子にしたifステートメントは、それを実行するための基準が既に同封のifから除外されているため、実行されません。

としてあなたのロジックの再構築をオフに最善だ:あなたのロジックは少しおかしくあり

if orderTotal > 150: 
    # do something 
elif orderTotal > 100: 
    # do something 
elif orderTotal > 50: 
    # do something 
else: # 50 or under... 
    # do something else 
+0

これは間違いだと私は思っています。実際にこのようにすることを考えていましたが、正しいかどうかは100%確信していませんでした。ありがとうございました! – legendaryxv2

0

if orderTotal <= 50.00: 
    if orderTotal > 50.00 and orderTotal <= 100.00: 
     # ** this will never run ** 
    else: 
     # This will run, if orderTotal <= 50.00 

orderTotal > 50.00場合にはelseはありませんので、何も、起こりません:量は< = $ 50あれば、実行することはありません「場合は、」ネストされたが、ということは> $ 50または< = $ 100ではないので、何には、以下のif orderTotal <= 50.00試験。 @Jon Clementsの答えはコードを構造化する正しい方法を示しています。

関連する問題