Reputation: 10686
I am making a python script that suggests new music to you, but for some reason i am getting a lot of errors. Script is not finished, but here it is
#!/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()
if i enter yes for do you like metallica, i get the error
File "tastepy.py", line 69, in <module>
metal()
TypeError: 'float' object is not callable
if i enter in no for the hipster question:
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'
I get these although there is no float anything in metal() anybody know what is going on?
Upvotes: 0
Views: 118
Reputation: 28099
you are using the same names for your functions and your global variables. consequently when you run any function you delete all the functions and replace them with ints or floats
Upvotes: 1
Reputation: 21918
The problem is that you are using the same names for your functions as your variables, and they are clobbering each other. Try using different names, e.g. for functions likes_metal()
and for the variable metal_score
.
Also you should declare and initialize your globals at the global level, not within the indie
function.
Upvotes: 5