我是编程和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,偶数?抱歉对此现在很困惑:(感谢您的帮助!
答案 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建议的那样,你正在重新定义传递的参数“数字”是什么。你的代码似乎试图做两件事。