Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的Python错误_Python_Function - Fatal编程技术网

奇怪的Python错误

奇怪的Python错误,python,function,Python,Function,我正在制作一个python脚本,向您推荐新音乐,但由于某些原因,我遇到了很多错误。脚本还没有完成,但在这里 #!/usr/bin/env python print("This is to help you find new bands!") pop = 0 def indie(): global indie global classic_rock global metal global pop indie = 0 classic_rock = 0

我正在制作一个python脚本,向您推荐新音乐,但由于某些原因,我遇到了很多错误。脚本还没有完成,但在这里

#!/usr/bin/env python
print("This is to help you find new bands!")
pop = 0
def indie():
    global indie
    global classic_rock
    global metal
    global pop
    indie = 0
    classic_rock = 0
    metal = 0
    pop = 0
    indie += 3
    classic_rock -= 1
    metal -= 1.5
    pop -= 3
def notindie():
    global indie
    indie += 1
def classicrock():
    global classic_rock
    classic_rock += 2
def notclassicrock():
    global classic_rock
    classic_rock -= 1
def popp():
    global pop
    global indie
    pop += 3
    indie -= 3
def notpop():
    global pop
    global metal
    pop -= 1
    metal += 1
def notmetal():
    global metal
    global pop
    metal -= 3
    pop += 1
def metal():
    global metal
    global pop
    global indie
    global classicrock
    classicrock += 1
    metal += 3
    indie -= 1
    pop -= 4
que = input("Do you consider yourself to be a hipster? (Yes/No) ")
if que == 'yes':
    indie()
if que == 'no':
    notindie()
que2 = input("Do you like the Rolling Stones? (Yes/No) ")
if que2 == 'yes':
    classicrock()
if que2 == 'no':
    notclassicrock()
que3 = input("Do you like Britney Spears? (Yes/No) ")
if que3 == 'yes':
    popp()
if que3 == 'no':
    notpop()
que4 = input("Do you like Metallica? (Yes/No) ")
if que4 == 'no':
    notmetal()
if que4 == 'yes':
    metal()
如果我为您喜欢metallica输入yes,我会得到错误

File "tastepy.py", line 69, in <module>
    metal()
TypeError: 'float' object is not callable
文件“tastepy.py”,第69行,在
金属()
TypeError:“float”对象不可调用
如果我对hipster问题输入“否”:

Traceback (most recent call last):
  File "tastepy.py", line 54, in <module>
    notindie()
  File "tastepy.py", line 19, in notindie
    indie += 1
TypeError: unsupported operand type(s) for +=: 'function' and 'int'
回溯(最近一次呼叫最后一次):
文件“tastepy.py”,第54行,在
notindie()
文件“tastepy.py”,第19行,在notindie中
独立+=1
TypeError:+=:“function”和“int”的操作数类型不受支持
我得到了这些,尽管金属中没有漂浮物()
有人知道发生了什么吗?

问题是,函数的名称与变量的名称相同,而且它们相互碰撞。尝试使用不同的名称,例如对于函数
likes_metal()
和变量
metal_score


此外,您还应该在全局级别声明和初始化全局变量,而不是在
独立
函数中。

问题在于,您的函数与变量使用相同的名称,并且它们相互碰撞。尝试使用不同的名称,例如对于函数
likes_metal()
和变量
metal_score


此外,您还应该在全局级别声明和初始化全局变量,而不是在
独立
函数中。

您的函数和全局变量使用相同的名称。因此,当您运行任何函数时,您将删除所有函数,并将其替换为int或float

函数和全局变量使用相同的名称。因此,当您运行任何函数时,您会删除所有函数,并将其替换为整数或浮点数

您所指的函数之外的全局级别是什么意思?也不建议您首先使用全局值。最好在函数参数中传递值。@Joeee是的,就像您当前在第二行中有
pop=0
。正如@Joel所说,全局变量不是很好的形式,但您已经在使用它们(或试图使用它们),所以这就是正确的操作方法。但是我如何使用函数参数中的变量呢?在全局级别,在函数之外,您指的是什么?也不建议您首先使用全局变量。最好在函数参数中传递值。@Joeee是的,就像您当前在第二行中有
pop=0
。正如@Joel所说,globals不是很好的形式,但您已经在使用它们(或试图使用它们),所以这就是正确的操作方法。但是我如何使用函数参数中的变量呢?我建议您仔细阅读和。你的实现就像图图中的乌龟一样优雅。什么意思,实现…我的意思是你用70行代码来写一些不应该超过20行的东西。您没有利用python语言的结构。我建议您检查其他人的代码,并在上阅读python语言教程,我建议您仔细阅读和。你的实现就像图图中的乌龟一样优雅。什么意思,实现…我的意思是你用70行代码来写一些不应该超过20行的东西。您没有利用python语言的结构。我建议您检查其他人的代码,并在