我知道 python2.7 允許在不同型別之間進行比較。因此 str 和 int 之間的相等比較將導致False. 取決于 a 和 b 的值,比較是否可以成立?
a = input('we input some string value a')
if (a==int('some string b')):
print("yes")
else:
print("no, never!!")
上面的代碼片段可以輸出“是”嗎?如果是,什么時候?
uj5u.com熱心網友回復:
簡短回答:是的,這可以yes作為答案產生(假設'some string b'它是一個可能實際包含合法int表示的字串的占位符;如果它是那個確切的文字字串,ValueError當你呼叫int它時你會得到一個)。
長答案:
An
int和 astr永遠不會比較相等。int并且str是不相關的不同型別,雖然型別靈活性很小(不同的數字型別在大多數語言中是可比的) ,即使在 Python 2 上(///不<引發例外并使用荒謬的后備比較以提供不相關型別的任意排序)它是一種強型別語言,并且不會像那樣進行互操作。><=>=intstr也就是說,
input在 Python 2 上很糟糕;它eval是從用戶那里收到的文本,所以如果用戶輸入12345,它實際上會回傳一個int. 因此,如果用戶輸入了一個合法的int文字,并且'some string b'它本身就是一個 的合法表示int,那么你已經提供了一個真實的int來比較雙方,這段代碼可以回傳yes,不是因為str和int比較彼此相等,而是因為當輸入看起來像一個(和s看起來像東西)時input將回傳s 。intintfloatfloat
旁注:在病態的情況下,有人可能在前一行中對input和/或int內置函式進行了命名,并且任何事情都可能發生。我不打算在那里討論細節。它是一種編程語言,你可以用它做愚蠢的事情,但是告訴它做愚蠢的事情并想知道它是否會愚蠢并沒有什么有趣的。
uj5u.com熱心網友回復:
如果將字串值(例如:23456)轉換為整數,例如:32143,您可能會得到結果。將 1234 與 defg 進行比較沒有任何意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/517212.html
