变量未定义错误

时间:2016-02-27 00:46:35

标签: python python-2.7

我一直在研究使用pygame和python开始游戏开发,并且遇到了定义具有参数的函数的障碍。第一个工作,我试图用一个参数制作一个更简单的版本。它一直说明c没有明确定义。我不明白为什么。对此有何建议或想法?我也有

def fugu_tip(price, num_plates, tip):
    total = price * num_plates
    tip = total * (tip / 100.)
    return tip

def Character(c):
    a = input("Enter a number 1 - 100")
    b = input("Enter A Number 1 - 100")
    c = 0
    c = a + b
    return c

Character(c)

我感谢所有帮助人员! 这是我项目的修订代码: '$'     导入pygame     随机导入     全球现金     全球PName     全球PHealth     全球PHunger     全球PJob     全球员工

def Character1():  
    Cash = 0  
    PName = raw_input("Please Enter Name: ")  
    PHealth = 100  
    PHunger = 100  
    PJob = ""  
    PEmployeed = False  
    print PName, Cash, PHealth, PHunger, PJob, PEmployeed  

Character1()  

'$'

5 个答案:

答案 0 :(得分:2)

我要修改你的一些代码,而不是完全改写。你缺少的是范围。在内部,您的功能c 定义的。但是,在函数之外,您尝试传入一个名为c的未定义的变量。

这是你的代码,修好了。

#it's true that by convention, functions generally start with lowercase
# and Classes being with uppercase characters
def character(c = 0):
    a = input("Enter a number 1 - 100")
    b = input("Enter A Number 1 - 100")
    return c * (a + b) 
myValue = 3 #note that the variable that you pass in 
# to your function does not have to have the same name as the parameter
character(myValue)

注意,我修改了函数的行为,以便我使用参数c。现在,c,输入参数,用于乘以两个用户输入的总和。当我调用该函数时,c的值变为3,因此用户输入的内容将被添加,然后再乘以3.

此外,def character(c):def character(c=0):之间存在差异。在第一种情况下,必须在调用时将值传递给函数。在第二种情况下,您可以跳过将值传递给函数,因为我们已经使用默认参数值定义了函数。所以第二个函数可以直接调用:

character(3) 
character()

但第一个只能用

正确调用
character(3)

答案 1 :(得分:1)

c在您的函数中定义 - 但不是您调用Character的位置。

你似乎在你的函数中将c设置为0 - 为什么还有任何参数呢?

最后,您不应该给出以大写字母开头的函数名称,例如按照为类保留的约定。

修改

def get_sum():
    a = input("Enter a number 1 - 100")
    b = input("Enter A Number 1 - 100")
    c = a + b
    return c

答案 2 :(得分:1)

嗯,问题是 c在当前范围内未定义。在您的情况下,c仅在函数Character内部可见,但不在外部。所以,你调用函数的地方不知道c是什么。只要您定义c,您的代码就可以正常运行。

def Character(c):
    a = input("Enter a number 1 - 100")
    b = input("Enter A Number 1 - 100")
    c = 0
    c = a + b
    return c

c = 0
Character(c)

或者类似这样的东西(编辑)

def Character(c):
    a = input("Enter a number 1 - 100")
    b = input("Enter A Number 1 - 100")
    c = 0
    c = a + b
    return c

def call_character():
    c = 0
    Character(c)

call_character()

答案 3 :(得分:0)

问题在于您致电Character(c) c已定义 。我无法建议你应该做什么,因为我不知道你想做什么,但那是你的问题。您使用的内容取决于您要为Character()提供的参数。

答案 4 :(得分:0)

C作为参数传递给函数Character,因此应该在调用then函数之前定义它。

您无需将任何参数传递给

Character

因为给定的行为不需要它。只需做

Character()

。 并且还从函数定义中删除C.

def Character(): 
    a = input("Enter a number 1 - 100") 
    b = input("Enter A Number 1 - 100") 
    c = 0 
    c = a + b 
     return c 
Character()

编辑:基于用户评论