Python 变量未定义错误

Python 变量未定义错误,python,python-2.7,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):

我一直在学习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 全球菲尔特 全球芬格酒店 全球PJob 全球pemployed

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()  

“$”

c
是在函数内部定义的,但不是在调用
字符的位置定义的

不管怎样,您似乎在函数中将
c
设置为
0
——那么为什么要设置任何参数呢

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

编辑:

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

问题是在哪里调用
字符(c)
。尚未定义
c
。我不能建议你应该做什么,因为我不知道你想做什么,但那是你的问题。取而代之的是,您要使用的参数取决于您想要给
Character()

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

你不需要把任何论点传给我

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()

编辑:根据用户评论,我将重新编写您的部分代码,而不是完全重新编写。您缺少的是范围。在内部,定义了函数
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字符(c):
def字符(c=0):
之间存在差异。在第一种情况下,调用函数时必须将值传递到函数中。在第二种情况下,您可以跳过向函数传递值,因为我们已经用默认值参数值定义了函数。因此,第二个函数可以通过以下方式直接调用:

character(3) 
character()
但第一个只能用

character(3)

问题是,c在当前范围内没有定义。在您的情况下,
c
只能从函数
字符的内部看到,而不能从外部看到。因此,调用函数的地方不知道
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)
或者像这样(编辑)


哦,对版主来说,很抱歉没有缩进的代码,仍然在试图弄清楚如何使用它。@cat我也一直在打错字。我不清楚你说的“我也有”是什么意思。你是说那是你的代码吗?还请提供准确的错误消息,最好是堆栈跟踪。最后,驼峰式方法名称在Python中极为罕见。我经常看到所有小写字母都带有下划线,你有时也会看到Pascal case.lol cat,是的,直到我发布:Djpmc,底部的代码是我的,顶部的代码是我试图破解的书中的例子,并理解其中的细微差别。我试图学习如何从长期使用外部源操作函数中的对象。在短期内,尝试创建我可以从内部操纵的对象。在函数中,您可以说
c=0
。您没有修改
c
;你正在重新定义它。不能修改整数;它是不变的,就像在字典里划一条线,然后在新的字典里写下定义一样。你没有修改这个定义的含义;您正在创建一个新的definition.ohh,那么字符(c)中的c只是空白,编译器会感到困惑,并且在编译器眼中几乎是空的?如果是这样的话,那么我怎样才能操作函数范围内的东西呢?
c
不仅仅是空白。您可以在说
c=0
之前使用它,它的值与函数的值相同,但当您说
c=0
时,您覆盖了旧的定义。恕我直言,这更像是一个政治声明,而不是一条硬规则。我正在尝试设置参数,看看是否可以使用这些参数从函数的外部操纵对象。您可以使用parantises,只需在其中不添加任何内容(请参见我的编辑)!后者确实是一种“政治”陈述,如果你想这样称呼它(我称之为“约定”)@KyleHuffman我们可以直接为你回答:不,你不能在函数范围变量之外操纵它们。(尝试时会出现此错误。)为此,需要一个模块级变量;您可以在函数中使用
global
来操作函数中的模块级变量,但这通常不是一个好主意。我以前也尝试过,但一直出现错误。jpmc,你能给我举个例子吗?这样我就能理解如何使用它了?还有一个附带问题,你能在变量中嵌套表达式吗?至少关于全球经济variables@KyleHuffman这两个问题都是你原来的问题。对于使用
global
的示例,我建议只搜索
global
。谷歌搜索很容易找到一些非常基本的例子。你的第二个
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()