[英]“is” not working in python IDE but working in command line
我無法理解為什么會發生這種情況..
看看這個python代碼:
word = raw_input("Enter Word")
length = len(word)
if word[length-1:] is "e" :
print word + "d"
如果我輸入“愛”,它的輸出必須“被愛”。 所以,當我在PyScripter IDE中編寫它時,它既不顯示錯誤也不顯示輸出。 但我在python shell中嘗試了相同的代碼,它的工作原理!
我想知道為什么會這樣。
is
關鍵字僅在字符串具有完全相同的標識時才起作用,即使字符串具有相同的值,也不能保證。 您應該使用==
代替的is
這里比較字符串的值。
或者更好的是,使用endswith
:
if word.endswith("e"):
print word + "d"
你應該使用==
在這種情況下,而不是is
。 Is
對象的標識進行檢查,即id('e')必須與切片返回的字符串的id相等。 碰巧,cpython將單字母字符串(和小整數)存儲為常量,因此這通常有效。 但它不可靠,因為任何其他實現都不能使用它,然后即使"e" is "e"
也不必產生True。 只需使用==
,它應該工作。
編輯: endswith
提到的endwith在這種情況下更好。 更安全,更具可讀性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.