python和编程新手,需要帮助编辑变量本身



当我把这个放进去时,它会出现一个错误,我希望有人能帮助我找出我做错了什么。

x = 0
def func(var):  
    if var = True:  
        x = x - 1
    else:
        pass

错误来自x = x - 1,我不知道我做错了什么

为了在函数范围内使用x,您必须告诉编译器在哪里找到x因此将代码改为:

x = 0
def func(var):  
    if var == True:
        global x  # look for x outside the scope of the function
        x = x - 1
    else:
        pass

也很好有一个返回到函数所以我建议:

x = 0
def func(var):  
    if var == True:
        global x  # look for x outside the scope of the function
        x = x - 1
    return None  # or -> return x (to return the value of x)

错误实际上来自前一行。您混淆了=(赋值运算符)和==(比较运算符)。正确的代码如下:

def func(var):
    global x
    if var == True:  
        x -= 1         #also you can simply do it as x -= 1 instead of x = x - 1
    else:
        pass

最后,有else: pass真的没有意义,因为你没有做任何事情在那里。只需将代码缩短为:

def func(var):
    global x
    if var == True:
        x -= 1

首先用赋值运算符=代替等号运算符==

x = 0
def func(var):  
    if var == True:  
        x = x - 1
    else:
        pass

第二,不要检查表达式/值是否等于(==)True/False,特别是在python中。只要给出一个True或true/False或false的语句/变量。在python中,None(null)空集合,如[]、0、0.0、timedelta为零和False都是假的,其他的都是真。要亲自测试这一点,只需尝试将值或表达式传递给bool函数,看看它是否返回TrueFalse。详见https://docs.python.org/2/library/stdtypes.html#truth-value-testing

x = 0
def func(var):  
    if var:  
        x = x - 1
    else:
        pass

第三,您可以查找但不能重新赋值在同一模块中声明的变量在函数外。除非你声明它是全局的。所以你可以不用全局

来打印
x = 0
def func(var):  
    if var:
        print x

,但不重新赋值。也不需要else分支或return语句(python默认返回None),所以只需

x = 0
def func(var):  
    if var:
        global x  
        x = x - 1

相关内容

最新更新