進出口新的這個所以我很抱歉,如果這不是要問的問題的最佳途徑......如何將變量與python中的字符串進行比較?
這裏是代碼 -
import sys
print("What is ur name?")
name = sys.stdin.readline()
answer = "jack"
if name is answer :
print("ur awesome")
exit();
現在,當我在cmd中我不運行它即使 我輸入 - 插孔?謝謝
進出口新的這個所以我很抱歉,如果這不是要問的問題的最佳途徑......如何將變量與python中的字符串進行比較?
這裏是代碼 -
import sys
print("What is ur name?")
name = sys.stdin.readline()
answer = "jack"
if name is answer :
print("ur awesome")
exit();
現在,當我在cmd中我不運行它即使 我輸入 - 插孔?謝謝
首先,替換is
與==
。 is
檢查兩個底層字符串是否是相同的實體(在內存中),而==
只是想檢查它們是否具有相同的值。
因爲「jack」的來源來自兩個來源(一個來自用戶,另一個來自您的硬編碼),它們是兩個獨立的對象。
由於@dawg提到你還必須使用.strip()
擺脫使用sys.stdin.readline()
輸入時的換行符。讀取輸入的最佳方法是在python3中使用input()
方法,或在python2中使用raw_input()
。
name = input('What is your name?\n')
使用==
的字符串比較。另外,readline()
將在字符串末尾包含換行符。你可以用例如
name = name.strip()
或者,您可以使用(在Python 3 input()
)raw_input()
代替readline()
,因爲它不包括開始與換行符。
name = raw_input("What is your name?\n")
能夠打印字符串以查看它是否有任何額外的空格是有幫助的,例如,
print("name: [%s]\n" % name)
太好了,但是請添加參考'input()' – dawg
使用'=='而不是'is'。 – StardustGogeta
小心'sys.stdin.readline()'。它將保留換行符。所以如果你輸入'jack',它實際上就是'jack \ n'。所以,當答案真的如此時,'answer ==「jack」'將是假的。你最好用'input()'代替。 – idjaw
使用'sys.stdin.readline()',你需要'answer == name.strip()'否則使用'input()' – dawg