用于循环和范围

时间:2014-03-06 17:59:44

标签: python loops for-loop

我是编程和Python的初学者,我想澄清一个关于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,偶数?抱歉对此现在很困惑:(感谢您的帮助!

3 个答案:

答案 0 :(得分: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

请注意使用modulo(%)运算符,"yields the remainder from the division of the first argument by the second."

答案 1 :(得分: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时它仍然没有”

答案 2 :(得分:0)

您可以使用模数(%)来检查偶数/奇数:

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

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

避免出现问题。

但正如@devnull建议的那样,你正在重新定义传递的参数“数字”是什么。你的代码似乎试图做两件事。