2016-05-18 27 views
-2

這裏的新程序員... python range函數似乎忽略比較運算符。範圍函數似乎忽略比較運算符

舉例來說,如果我有以下功能:

def test(x): 
    for i in range(0,6): 
     if i < x: 
      print i 

如果我執行測試(3),我的理解是,函數應該打印出0,1,2,3後停止。但是,它打印0-5。

爲什麼會出現這種情況?

+2

你可以顯示在repl(命令行)和結果中運行的代碼嗎?我想知道你是否將字符串'「3」'傳遞給你的函數而不是整數'3'? –

+2

我不相信你。它按預期輸出「0,1,2」。 – miradulo

+1

此外,我希望它打印0,1和2.我不希望它打印3,因爲3不小於3. –

回答

1

我的錢在你身上,將字符串"3"傳遞給你的函數,而不是整數3。你的3從哪裏來?有沒有可能從raw_input

由於歷史原因,python 2認爲所有整數都「小於」所有字符串,因爲對於這些不同的類型,它回退到比較它們的類型名稱和"int" < "str"