2014-03-06 213 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”是什么。你的代码似乎试图做两件事。