I have two different Codes and i want to know Why one of them dont work? Thanks for ur help.
#1
fahrzeug1 = dict(marke = "VW", modell = "Golf", Baujahr=2012, preis= 2500)
fahrzeug2 = dict(marke="Porsche",modell="cayman", baujahr=2019, preis=21999)
fahrezeug3= dict(marke="BMW",modell="3er",baujahr=2014, preis=8000)
listefahrzeuge = [fahrzeug1,fahrzeug2,fahrezeug3]
max = eval(input("Geben sie bitte ihren höchst Preis an: "))
if fahrzeug1["preis"] <= max:
print(fahrzeug1, "\n")
if fahrzeug2["preis"] <= max:
print(fahrzeug2, "\n")
if fahrezeug3["preis"] <= max:
print(fahrezeug3, "\n")
#2
fahrzeug1 = dict(marke = "VW", modell = "Golf", Baujahr=2012, preis= 2500)
fahrzeug2 = dict(marke="Porsche",modell="cayman", baujahr=2019, preis=21999)
fahrezeug3= dict(marke="BMW",modell="3er",baujahr=2014, preis=8000)
listefahrzeuge = [fahrzeug1,fahrzeug2,fahrezeug3]
max = eval(input("Geben sie bitte ihren höchst Preis an: "))
if listefahrzeuge[0][3] <= max:
print(fahrzeug1, "\n")
if listefahrzeuge[1][3] <= max:
print(fahrzeug2, "\n")
if listefahrzeuge[2][3] <= max:
print(fahrezeug3, "\n")
CodePudding user response:
eval
should be replaced with either an int
or a float
depending on what you're looking for.
Also with noting that eval
will allow the user to input arbitrary code and execute that code -- this presents a security risk in a lot of cases, you generally should avoid using eval.
The other issue is listefahrzeuge is a list of dictionaries, not a list of lists so listefahrzeuge[0][3]
needs to be replaced with listefahrzeuge[0]['preis']
For what it's worth you can replace this:
if fahrzeug1["preis"] <= user_input:
print(fahrzeug1, "\n")
if fahrzeug2["preis"] <= user_input
print(fahrzeug2, "\n")
if fahrezeug3["preis"] <= user_input:
print(fahrezeug3, "\n")
with this:
for d in listefahrzeuge:
if d['preis'] <= user_input:
print(d)