奇怪的Python错误
我正在制作一个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
#!/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语言的结构。我建议您检查其他人的代码,并在