@Julian K
Ohne die Fehlermeldung kann man nur raten, was Dein Problem ist... Ich nehme mal an, Du verwendest Python 2, da Du das ``print`` statement und nicht die `print()` Funktion verwendest. Wenn dem so ist nehme ich weiter an, dass Du nach der Eingabe einen `NameError` bekommst. Innerhalb Python 2 gibt es neben `input()`, das alles, das Du eingibst wie eine Anweisung behandelt noch `raw_input()`, das alles, das Du eingibst als String zurückgibt. Verwende unter Python 2 in jedem Fall `raw_input()`, da ein böser Bube über `input()` Code auf Deinem Rechner ausführen kann.
Mit `raw_input()` wird Dein Programm funktionieren. Statt den vielen ``if``'s würde ich aber entweder
Code: Alles auswählen
if selection == asset[0]:
print price[0]
elif selection == asset[1]:
print price[1]
elif selection == asset[2]:
print price[2]
elif selection == asset[3]:
print price[3]
verwenden, da in diesem Fall nach einem Treffer die anderen Abfragen nicht mehr durchgeführt werden. Noch besser allerdings fände ich es, wenn Du den index nicht erst abfrägst um ihn dann wieder abzufragen, sondern gleich verwendest:
Code: Alles auswählen
assets = ['Bond', 'Stock', 'Future', 'Option']
prices = [1, 2, 3, 4]
def get_price():
selection = raw_input('Welche Assetklasse wollen Sie kaufen? ')
try:
return prices[assets.index(selection)]
except ValueError:
return '{!r} ist nicht enthalten!'.format(selection)
Code: Alles auswählen
>>> get_price()
Welche Assetklasse wollen Sie kaufen? Bond
1
>>> get_price()
Welche Assetklasse wollen Sie kaufen? bla
'bla' ist nicht enthalten!
Aber noch besser fände ich es, wenn Du statt zweier Listen für zusammengehörende Daten eine andere Datenstruktur verwenden würdest. Wenn es nur um die Abfrage von Preisen geht, zwingt sich mir ein Dictionary auf.
mutetella