2010-10-20 62 views
0

假設有一個參數nn可以是任何數字嗎?例如,問題是這樣的:給定一個非負數num返回True,如果num內10的倍數的2這是我想到的是:Python中的參數

def near_ten(num): 
    n = int #So I assume n can be any integer 
    if abs(num - n*10) <=2: 
     return True 
    Return False 

但是,有兩個問題。首先,在n*10,*是一個不受支持的操作數類型因爲我認爲我可以使用Python作爲計算器。第二,我不能簡單地說n = int,那麼在數學函數中,n可以被看作是任何數字(或整數)的變量。如果有一種方式可以用這種方式使用n,那麼生活就會變得容易多了。

我終於弄明白以另一種方式不包括「N」作爲參數:

def near_ten(num): 

if num%10<=2: 
    return True 
if (num+2)%10<=2: 
    return True 
return False 

不過,我還是很好奇的「n」如前面提到的參數。由於我只是一個首發,所以這真的很讓人困惑。

+2

你不能說「n可以是任何int」,然後繼續在計算中使用n,就像它是一個數字一樣。 Python不能這樣工作。 – kindall 2010-10-20 04:18:10

回答

1

在Python中,int是一種類型。類型是Python中的第一類對象,可以綁定到名稱。當然,試圖用一個數字乘以一個類型通常是沒有意義的,所以這個操作沒有默認定義。它可以通過新名稱來引用。

n = int 
print(n(3.4)) 
print(n('10') == 10) 
-2

我不知道,如果你已經跑你的代碼或沒有,但蟒蛇是一個高層次的解釋型語言,Python可以變量類型,因此您無需顯式聲明它們之間的區別,你的函數頭是有效。 你也可以做整數和浮動/雙打之間的操作,而不需要鑄造,python已經爲你處理

你的函數會在任何編譯器中產生一個錯誤,你聲明瞭變量,你已經定義了它,但你還沒有初始化它

+0

不,'n'被初始化爲'int'。 – 2010-10-20 04:16:34

+0

即使如此,該對象也沒有存儲值,因此他無法對該對象執行操作,它是一個空對象; itd稱之爲聲明;例如在C++中執行int x;定義對象,但只有當你做x =(整數值);那麼對象就會被初始化,因爲現在它在內存中佔有一個空間......如果我的理解錯誤,糾正我 – mayotic 2010-10-20 04:22:01

+2

是的,對象有一個存儲的值。該值是'int'類型,它是Python中的一個對象。 – kindall 2010-10-20 04:22:52

0

這是一個非常簡單的解決方案:

def near_mult_ten(num): 
    return abs(num - (num+5) // 10 * 10) <= 2 

編輯:固定。

+0

不,這將返回False爲9. – 2010-10-20 04:31:26

+0

你是對的。相信與否,我意識到,就在我昨晚睡着之前。修復。 – kindall 2010-10-20 14:05:49