我是一个初学者,我相信这是一个简单的错误。在意外粘贴而不是复制正确的代码之前,我已使程序正确运行。如果给定一个奇数,则该代码应输出True,给定一个偶数,则将输出False。这是我修改过的,但仍然无法在全局范围内将isOdd值更改为False:
def odd(x):
while x%2==0:
isOdd=False
return isOdd
isOdd=True
x=42
odd(x)
print(isOdd)
答案 0 :(得分:1)
在主程序中,您忽略了返回值。更改您的代码以将其分配到您希望的位置。要学习的重要一件事是名称空间和变量作用域。您的程序有两个变量,名为isOdd
:在主程序和函数中各一个。 Python不会以任何方式链接它们。
# isOdd=True This line does *not* assign a value inside the function
x=42
isOdd = odd(x)
print(isOdd)
答案 1 :(得分:0)
在这种情况下,使用其他方法要好得多。我想像下面的代码(在C ++中)一样,不需要使用循环。
void number_check(int var1){
if(var1%2==0){
cout << "Variable Is Even!" << endl;
}else{
cout << "Variable is Odd!" << endl;
}
}
答案 2 :(得分:0)
您的功能可以简化为仅几个字符。在大多数语言(包括Python)中,0的计算结果为false;其他任何数字的计算结果为true。您唯一需要做的就是将值转换为布尔值并返回它。
def odd(x):
return bool(x % 2)
x = 42
result = odd(x)
print(result)
您的问题包括与Python范围界定相关的一些错误。我建议您参考变量作用域文档,并更好地了解何时使用while循环和if语句。
Python变量作用域:https://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html
答案 3 :(得分:-1)
它可以固定如下:
def odd(x):
global isOdd # Use 'global' keyword
while x%2==0:
isOdd=False
return isOdd
但是我不建议使用全局变量声明
这会使代码片段化,并且难以阅读上下文。
在您的情况下(要知道是否为奇数),只需使用return即可。
is_odd = odd(x)