-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

现在每种可能性都是同一个块的一部分,因此只会做出一个决定,而不是使用 plain ifs的顺序运行

于 2013-05-23T09:36:24.107 回答
1

当您有多个条件并且您只想执行一个条件(如果它符合您的条件)时,请使用

“如果 elif 关键字”

在您的情况下,代码将是

money = 100
if money == 100:
    print('You buy a pair of headphones')
    money -= 100
elif money <= 50 and money >=25:
    print('You buy a movie')
    money -= 25
elif money <= 10 and money >=5:
    print('You buy a burger')
    money -= 5
于 2013-05-23T10:14:34.680 回答
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 回答
0

发生这种情况是因为所有条件都为真,因此您获得了所有输出。反而

money = 100
if money == "100":
   print("You buy a pair of headphones.")
   money = 100
elif money <="50" and => "25":
    print("You buy a movie.")
    money = 25

elif money <= "25" and => "10":
     print("You buy a burger.")
     money = 5
于 2018-06-12T07:22:13.910 回答