2017-03-05 92 views
2

這是我當我試圖做一個if-then語句作出的代碼,但是,它總是默認爲別的。此外,我剛開始嘗試從今天的在線教程中進行編碼。爲什麼if-then語句不起作用?

print('yes or no?') 

if sys.stdin.readline() == 'yes' : 
    print('Yay') 
else : 
    print('Aww') 

這是發生了什麼:

Console:yes or no? 

Me:yes 

Console:Aww 

我一直在尋找的東西了半小時,不能找出如何解決這個問題,請幫助

回答

2

sys.stdin.readline()讀取一行以'\ n'結尾(當你點擊「enter」時)。

因此,您需要使用strip()從捕獲的輸入中刪除此'\ n'。

print('yes or no?') 

if sys.stdin.readline().strip() == 'yes' : 
    print('Yay') 
else : 
    print('Aww') 

我試圖解釋和解決您的具體問題,但當然,你可以使用raw_input()input()(PY 3)如其他答覆中提到。

+0

好的,謝謝,因爲我之前使用的是數字,我不需要將.stip()添加到sys.stdin.readline的末尾,但我不知道你必須使用它來處理帶有數字的字符串 – Crozear

+0

readline()總是在您輸入時捕獲\ n。在python控制檯中試一下,你會看到。 –

+1

@Crozear可能在使用數字之前,您使用的是int(),並且刪除了尾部空格 –

1

在Python中,獲取用戶字符串的輸入可以通過input()(或在python 2.7中使用raw_input())完成。

如果包括代碼:

user_input = raw_input("yes or no?") 

這將首先打印字符串「?是或否」,然後等待用戶輸入(通過標準輸入),然後保存爲一個名爲user_input字符串。

所以,你改變你的代碼:

user_input = raw_input("yes or no?") 
if user_input == "yes": 
    print("Yay") 
else: 
    print("Aww") 

這應該收到預期的效果。

+0

好吧,比記住sys.stdin.readline()要容易得多。 – Crozear

0

好吧我用字符串USER_INPUT和投入,而不是sys.stdin.readline(),我把它用在一個基本的計算器這裏是:

import random 
import sys 
import os 


user_input = input("Would you like to add or subtract?") 
if user_input == 'add' : 
    print('What would you like to add?') 
    plus1 = float(sys.stdin.readline()) 
    print('Ok so %.1f plus what?' % (float(plus1))) 
    plus2 = float(sys.stdin.readline()) 
    print('%.1f plus %.1f equals %.1f' % (float(plus1),float(plus2), float(plus1+plus2))) 
elif user_input == 'subtract' : 
    print('What would you like to subtract?') 
    minus1 = float(sys.stdin.readline()) 
    print('Ok so %.1f minus what?' % (float(minus1))) 
    minus2 = float(sys.stdin.readline()) 
    print('%.1f minus %.1f equals %.1f' % (float(minus1), float(minus2), float(minus1 - minus2))) 
    else : 
     print('That is not one of the above options') 

非常感謝你們!

相關問題