-2
這裏的新程序員... python range函數似乎忽略比較運算符。範圍函數似乎忽略比較運算符
舉例來說,如果我有以下功能:
def test(x):
for i in range(0,6):
if i < x:
print i
如果我執行測試(3),我的理解是,函數應該打印出0,1,2,3後停止。但是,它打印0-5。
爲什麼會出現這種情況?
這裏的新程序員... python range函數似乎忽略比較運算符。範圍函數似乎忽略比較運算符
舉例來說,如果我有以下功能:
def test(x):
for i in range(0,6):
if i < x:
print i
如果我執行測試(3),我的理解是,函數應該打印出0,1,2,3後停止。但是,它打印0-5。
爲什麼會出現這種情況?
我的錢在你身上,將字符串"3"
傳遞給你的函數,而不是整數3
。你的3從哪裏來?有沒有可能從raw_input
?
由於歷史原因,python 2認爲所有整數都「小於」所有字符串,因爲對於這些不同的類型,它回退到比較它們的類型名稱和"int" < "str"
。
你可以顯示在repl(命令行)和結果中運行的代碼嗎?我想知道你是否將字符串'「3」'傳遞給你的函數而不是整數'3'? –
我不相信你。它按預期輸出「0,1,2」。 – miradulo
此外,我希望它打印0,1和2.我不希望它打印3,因爲3不小於3. –