在Python函数中返回局部变量时出现问题
我是一个初学者,我相信这是一个简单的错误。在我不小心粘贴而不是复制正确的代码之前,我让程序正确运行。如果给定奇数,则代码应输出True,如果给定偶数,则代码应输出False。以下是我已修改的内容,但仍然无法在全局范围内将isOdd值更改为False:在Python函数中返回局部变量时出现问题,python,function,Python,Function,我是一个初学者,我相信这是一个简单的错误。在我不小心粘贴而不是复制正确的代码之前,我让程序正确运行。如果给定奇数,则代码应输出True,如果给定偶数,则代码应输出False。以下是我已修改的内容,但仍然无法在全局范围内将isOdd值更改为False: def odd(x): while x%2==0: isOdd=False return isOdd isOdd=True x=42 odd(x) print(isOdd) 在主程序中,忽略了返回值。更改代码以将其分配到所需的
def odd(x):
while x%2==0:
isOdd=False
return isOdd
isOdd=True
x=42
odd(x)
print(isOdd)
在主程序中,忽略了返回值。更改代码以将其分配到所需的位置。要学习的一件重要事情是名称空间和变量范围。您的程序有两个名为isOdd的变量:主程序和函数中各一个。Python不会以任何方式链接它们
# isOdd=True This line does *not* assign a value inside the function
x=42
isOdd = odd(x)
print(isOdd)
它可以按以下方式固定:
def奇数(x):
全局isOdd#使用“全局”关键字
当x%2==0时:
isOdd=False
返回isOdd
但我不建议使用全局变量声明
这使得代码片段和上下文难以读取
在您的情况下(要知道是否是奇数),只需使用返回
is_odd = odd(x)
在这种情况下,if-else更适合使用。就像下面的代码(在C++中),我想不需要使用循环
void number_check(int var1){
if(var1%2==0){
cout << "Variable Is Even!" << endl;
}else{
cout << "Variable is Odd!" << endl;
}
void number\u检查(int var1){
if(var1%2==0){
cout您的函数可以简化为一个只有几个字符的值。在大多数语言中,0的计算结果为false,包括Python。任何其他数字的计算结果都为true。您只需要将值转换为布尔值并返回它
def odd(x):
return bool(x % 2)
x = 42
result = odd(x)
print(result)
注
您的问题包括一些与Python中的作用域相关的错误。我建议您参考变量作用域文档,提高对何时使用while循环和if语句的理解
工具书类
Python变量作用域:变量不是那样工作的-你不能返回或传递变量,返回一些变量
并不意味着调用者现在有一个一些变量
或者对调用者已有的一些变量
做任何事情。这里检查一下。不需要在这里使用全局变量…合理化这里的global通常会证明global的过度使用是合理的。@pygeek我同意,这是过度使用。这只是解决方案之一。但这是一个简单的程序,如果数字是奇数,它会打印True或False。对不起,有人告诉我不要使用if语句,而是使用%Operator,但如果我们在循环中运行它,我猜它不会结束。因为var1%2==0;将始终是如果是偶数,则为true