2014-03-06 279 views
0

我是一名編程和Python的初學者,我想澄清for循環中的一個簡單問題。For循環和範圍

def check(number): 
    for number in range(0,10): 
     if number/2*2==number: 
      print "Even nos:", (number) 

     else: 
      print "Odd nos:", (number) 
check(6) 

有沒有人知道我爲什麼得到這個結果?

Even nos: 0 
Odd nos: 1 
Even nos: 2 
Odd nos: 3 
Even nos: 4 
Odd nos: 5 
Even nos: 6 
Odd nos: 7 
Even nos: 8 
Odd nos: 9 

其實我是想檢查,如果6號是偶數。除非什麼號碼是括號內其實並不重要,因爲這段代碼將檢查的整個範圍,0至10,爲偶數?對不起,這個現在很困惑:(謝謝你的幫助!)

+0

所以你只是想知道'check(6)== True'? – wheaties

+0

如果您重新定義變量,您認爲會發生什麼? – devnull

+0

如果我正確理解你的問題,你的'number/2 * 2 == number'條件不需要for循環。 –

回答

2

除非括號內的數字並不重要,因爲這段代碼將檢查整個範圍,0到10,偶數?

賓果您傳遞number但隨後你的循環忽略了什麼傳入,改變number根據循環定義,環比0-9

你可能想要的東西等等。:

def check(number): 
    print number % 2 == 0 

或者:

def check(number): 
    if number % 2 == 0: 
     print "Even no: ", number 
    else: 
     print "Odd no: ", number 

注意使用模(%)運算符,這"yields the remainder from the division of the first argument by the second."

0

如果你這樣做:

def check(number): 
    for number in range(0,10): 

你的函數的第一行,你重新定義你的論點,從而無法再訪問它。無論你給出的是什麼,你的函數總是以相同的方式運行。

我想你想要做的是:

def check(number): 
    if number/2*2==number: 
     print "Even nos:", (number) 
    else: 
     print "Odd nos:", (number) 

然後

check(6) 

for number in range(0,10):check(number) 

,並締結,一個更好的方法來檢查的平整度號碼是number%2==0這意味着「當我將這個數字除以2時,它沒有任何意義」

0

可以使用模量(%)來檢查即使/奇怪:

In [20]: def isodd(number): 
    return bool(number%2) 
    ....: 

In [21]: isodd(6) 
Out[21]: False 

問題可以避免。

但是正如@devnull所示,您正在重新定義傳遞的參數「number」是什麼。你的代碼似乎試圖做兩件事。