It shows KeyError: ('Black in Black', 8.5)
album_rating={"Black in Black":8.5,"Believer":6,"SmackTac":7,"You":9}
a=(input("Enter the name:"))
For a in album_rating.items():
if(album_rating[a]>8):
print("This album is Amazing!")
else:
print("Try a different album")
print("Welcome")
CodePudding user response:
What is the point of that for loop you introduced? I think you don't need it. Does the code below work for you?
album_rating = {"Black in Black": 8.5, "Believer": 6, "SmackTac":7, "You": 9}
a = input("Enter the name:")
if album_rating[a] > 8:
print("This album is Amazing!")
else:
print("Try a different album")
CodePudding user response:
There a couple of things which need fixing here. Firstly you name your input variable a
but then use that to loop over your dictionary.
Secondly dict.items()
returns a list of key value pairs e.g.
[('Black in Black', 8.5), ('Believer', 6), ('SmackTac', 7), ('You', 9)])
so a
will never be found in the dictionary because you are comparing a string to a list hence the KeyError
.
If you want to loop over the keys of a dictionary specifically then you should use dict.keys()
. Alternatively you can use a try-except
block to catch any KeyErrors
.
album_rating={"Black in Black":8.5,"Believer":6,"SmackTac":7,"You":9}
a=input("Enter the name:")
try:
album = album_rating[a]
if(album_rating[a]>8):
print("This album is Amazing!")
else:
print("Try a different album")
except KeyError:
print ("Album does not exist")
OR
album_rating={"Black in Black":8.5,"Believer":6,"SmackTac":7,"You":9}
a=input("Enter the name:")
if a in album_rating.keys():
if(album_rating[a]>8):
print("This album is Amazing!")
else:
print("Try a different album")
else:
print ("try again")