-1

if ステートメントで何かを機能させようとしていますが、正しいものを選択する代わりに、それらすべてを選択します。したがって、以下のコード:

money=100

if money==100:
    print('You buy a pair of headphones')
    money-=100
if money<50:
    print('You buy a movie')
        money-=25
if money<10:
    print('You buy a burger')
    money-=5

これを返します:

You buy a pair of headphones
You buy a movie
You buy a burger

助けてください!

4

4 に答える 4

11

使用するelif

money=100

if money==100:
    print('You buy a pair of headphones')
    money-=100
elif money<50:
    print('You buy a movie')
    money-=25
elif money<10:
    print('You buy a burger')
    money-=5

ifそれぞれの可能性は現在同じブロックの一部であるため、単純なsでの一連の実行ではなく、1 つの決定のみが行われます。

于 2013-05-23T09:36:24.107 に答える
0

または、次のようにします。

prices = {'100':'headphones', '50':'movie', '10':'burger', 5}
money = 100
for price in prices: 
    if money >= price: 
        print 'You buy a ', prices[price]
        money -= price
        break

文字までは同じではありませんが、かなりコンパクトになっていることがわかります。新しいケースを追加する方が簡単です。そしてその論理は理にかなっています - お金を払えるものなら何でも買えるはずです。

私もそれをメソッドにカプセル化します:

prices = {'100':'headphones', '50':'movie', '10':'burger', 5}
def buy(money):
    message = 'You could not afford anything'
    for price in prices: 
        if money >= price: 
            message = 'You buy a ' + prices[price]
            money -= price
            break
    return message
于 2013-05-23T10:19:23.530 に答える