我正在制作一个向你推荐新音乐的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()
如果我输入yes你喜欢metallica,我会收到错误
File "tastepy.py", line 69, in <module>
metal()
TypeError: 'float' object is not callable
如果我为时髦问题输入no:
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'
我得到这些虽然金属中没有漂浮物() 有谁知道发生了什么事?
答案 0 :(得分:5)
问题是你使用与变量相同的函数名称,并且它们互相破坏。尝试使用不同的名称,例如对于函数likes_metal()
和变量metal_score
。
此外,您应该在全局级别声明和初始化全局变量,而不是在indie
函数内。
答案 1 :(得分:1)
您为函数和全局变量使用相同的名称。因此,当您运行任何函数时,您将删除所有函数并用int或float替换它们