2017-05-03 10 views
0

私はCodeAcademyの初心者のPythonコースに取り組んでいます。これは食料品店で "チェックアウト"している演習の一部ですが、 "total"を返すのではなく、最終的な請求書/ "合計"を印刷するコードにしたかったのです。なぜそれが印刷されていないのか分かりません。私は最後に、反復の後に、そしてここでは再帰の中で(合計を返す前に)、各ステップの後に印刷するかどうかを確認しようとしました。このコードを実行すると、何も表示されません。なぜ関数内から結果を印刷できないのですか?

shopping_list = ["banana", "orange", "apple"] 

stock = { 
    "banana": 6, 
    "apple": 0, 
    "orange": 32, 
    "pear": 15 
} 

prices = { 
    "banana": 4, 
    "apple": 2, 
    "orange": 1.5, 
    "pear": 3 
} 


food = shopping_list 

def compute_bill(food): 
    total = 0 
    for item in food: 
     if stock[item]>0: 
      total += prices[item] 

      stock[item] -=1 
    print total 
    return total 

編集: これらも私に読み出し与えていない:まだ

def compute_bill(food): 
    total = 0 
    for item in food: 
    if stock[item]>0: 
     total += prices[item] 
     stock[item] -=1 
    print "Total is $",total #tried 0-5 indentations, same blank result 

def compute_bill(food): 
    total = 0 
    for item in food: 
    if stock[item]>0: 
     total += prices[item] 
     stock[item] -=1 
    print "Total is $",total #tried 0-5 indentations, same blank result 
    return total 

print compute_bill(food) 

戻り

Total is $ 5.5 
5.5 

ながら - 私は解決策を見つけました...

def compute_bill(food): 
    total = 0 
    for item in food: 
    if stock[item]>0: 
     total += prices[item] 
     stock[item] -=1 

    return total 

print "Total is $",compute_bill(food) 

戻り 合計は$ 5.5 です...しかし、私はちょうど更新されている必要がある変数の合計を、印刷できない理由として困惑しています。そしてなぜそれがそこで働くのですが、機能の餌としてではありません。これはエクササイズの単なる質問ですが、なぜこれをやっているのか分かりません。あなたの最初の例で

答えて

1

shopping_list = ["banana", "orange", "apple"] 

stock = { 
    "banana": 6, 
    "apple": 0, 
    "orange": 32, 
    "pear": 15 
} 

prices = { 
    "banana": 4, 
    "apple": 2, 
    "orange": 1.5, 
    "pear": 3 
} 


food = shopping_list 

def compute_bill(food): 
    total = 0 
    for item in food: 
     if stock[item]>0: 
      total += prices[item] 

      stock[item] -=1 
    print total 
    return total 

あなたは機能def compute_billを定義。あなたは決してその機能を呼びません。この関数は、呼び出された場合に実行されます。 compute_bill(["banana"])

+0

ありがとうございました!このチュートリアルでは、ほとんどの場合、呼び出さずに関数を作成するように見えるので、これは明確ではありませんでした。 – toonarmycaptain

1

は、私はかなりの問題を理解してわからないんだけど、あなたは

を言ったが、私は、私はちょうど更新されている必要がある変数の合計を、印刷できない理由として困惑しています。

あなたはtotal変数が関数内でのみ宣言されているので、それは動作しません機能外部からtotalを印刷しようとします。 return totalを使用すると、コードの残りの部分が関数外からデータを取得できるため、print computeBill(food)が機能します。

編集、また、あなたが各繰り返しで合計を印刷したい場合は、あなたのコード:

def compute_bill(food): 
    total = 0 
    for item in food: 
    if stock[item]>0: 
     total += prices[item] 
     stock[item] -=1 
     print "Total is $",total 

間違いなく(もしあなたがforループで繰り返すたびに印刷します意味このインデントを持っている必要がありますそのままにしておくと、forの後にのみ印刷されます)。

1

printステートメントは、関数compute_bill(..)の一部です。関数compute_bill(..)を呼び出すまで、printステートメントは実行されません。

def compute_bill(food): 
    total = 0 
    for item in food: 
     if stock[item]>0: 
     total += prices[item] 
     stock[item] -=1 
    print "Total is $",total #this works 

compute_bill(food) # call the function it has the print statement 
関連する問題