2016-09-28 216 views
1

進出口新的這個所以我很抱歉,如果這不是要問的問題的最佳途徑......如何將變量與python中的字符串進行比較?

這裏是代碼 -

import sys 

print("What is ur name?") 
name = sys.stdin.readline() 

answer = "jack" 

if name is answer : 
    print("ur awesome") 
exit(); 

現在,當我在cmd中我不運行它即使 我輸入 - 插孔?謝謝

+2

使用'=='而不是'is'。 – StardustGogeta

+0

小心'sys.stdin.readline()'。它將保留換行符。所以如果你輸入'jack',它實際上就是'jack \ n'。所以,當答案真的如此時,'answer ==「jack」'將是假的。你最好用'input()'代替。 – idjaw

+0

使用'sys.stdin.readline()',你需要'answer == name.strip()'否則使用'input()' – dawg

回答

5

首先,替換is==is檢查兩個底層字符串是否是相同的實體(在內存中),而==只是想檢查它們是否具有相同的值。

因爲「jack」的來源來自兩個來源(一個來自用戶,另一個來自您的硬編碼),它們是兩個獨立的對象。

由於@dawg提到你還必須使用.strip()擺脫使用sys.stdin.readline()輸入時的換行符。讀取輸入的最佳方法是在python3中使用input()方法,或在python2中使用raw_input()

name = input('What is your name?\n')

+1

你需要'.strip()',因爲'sys.stdin.readline()'包含'\ n' – dawg

+1

我喜歡這個解釋,但是提供一個解決方案會讓答案更好:) – Li357

4

使用==的字符串比較。另外,readline()將在字符串末尾包含換行符。你可以用例如

name = name.strip() 

或者,您可以使用(在Python 3 input()raw_input()代替readline(),因爲它不包括開始與換行符。

name = raw_input("What is your name?\n") 

能夠打印字符串以查看它是否有任何額外的空格是有幫助的,例如,

print("name: [%s]\n" % name) 
+1

太好了,但是請添加參考'input()' – dawg

相關問題