2015-08-09 120 views
1

有人可以看看這個,告訴我什麼是錯的嗎? 我試圖運行它,但是當你說no的下雨,no爲下雪,它仍然打印出如果真的陳述You can't ride your bike錯誤if-else在Python中的情況

raining = input("Is it raining right now?\nYes or No?\n") 
if raining.lower() == "yes" : 
    raining = True 
else: 
    raining = False 
snowing = input("Is it snowing out?\nYes or No\n") 
if snowing.lower() == "yes" : 
    snowing = True 
else: 
    snowing = False 
if raining or snowing == True : 
    print("You can't ride your bike") 
if raining and snowing == False : 
    print("You can ride your bike") 

cost = input("How much is your new PC?") 
cash = input("How much money do you have?") 
total = float(cash) + float(cost) 
if total < 0 : 
    print("You can't buy it") 
if total >= 0 : 
    print ("You can buy it") 
+0

你知道'如果下雨或下雪==真'被解釋爲'如果(下雨)或(下雪==真)'如果下雨==真或下雪==真'? –

回答

2

if raining and snowing == False被解釋爲:

if raining == True and snowing == False 

您應該更新你的第二個if聲明如下:

if raining == False and snowing == False: 
    ... 

由於if rainingif raining == True是檢查布爾值相同,可以簡化您的邏輯是這樣的:

if raining or snowing: 
    print("You can't ride your bike") 
else: 
    # implies "not (raining or snowing)" or "(not raining) and (not snowing)" 
    print("You can ride your bike") 
+3

你可以簡化爲「如果下雨和下雪」和「如果不是(下雨或下雪)」。 – TigerhawkT3

1

只要改變and條件else,並在or條件中使用括號。

raining = input("Is it raining right now?\nYes or No?\n") 

if raining.lower() == "yes" : 
    raining = True 
else: 
    raining = False 
snowing = input("Is it snowing out?\nYes or No\n") 

if snowing.lower() == "yes" : 
    snowing = True 
else: 
    snowing = False 
if (raining or snowing) == True : 
    print("You can't ride your bike") 
else: 
    print("You can ride your bike") 

cost = input("How much is your new PC?") 
cash = input("How much money do you have?") 
total = float(cash) + float(cost) 
if total < 0 : 
    print("You can't buy it") 
if total >= 0 : 
    print ("You can buy it")