Python was mache ich falsch?
Ich mache eine Aufgabenstellung die lautet:
Ich soll ein Programm erstellen, welches ganze zahlen einliest, und diese dann über die Methode index gesucht, um das letzte Vorkommen einer Zahl, die ein Anwender eingaben kann.
Hier ist aber zu achten das dieses Programm keine Fehler auslöst, wenn die Zahl nicht gefunden wird.
Mein Programm:
liste = (1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10)
eingabe = int(input("Wonach soll gesucht werden: "))
zahl = liste.count(eingabe)
if zahl != 10:
print("Die Position ist", liste.index(eingabe))
else:
print("Der Wert", eingabe, "wurde nicht gefunden")
doch dieses gibt mir die Zahl z.B wenn ich 5 eingabe gibt er die 4 aus.
4 Antworten
wenn ich 5 eingabe gibt er die 4 aus
Klar. Weil die Zahl 5 an Position 4 steht. Es wird von 0 gezählt.
Computer beginnen mit der 0 an zu zählen :)
addiere im print bei liste.index(eingabe) einfach eine 1 dazu.
liste = (1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10)
eingabe = int(input("Wonach soll gesucht werden: "))
zahl = liste.count(eingabe)
if zahl != 10:
print("Die Position ist", liste.index(eingabe)+1)
else:
print("Der Wert", eingabe, "wurde nicht gefunden")
doch dieses gibt mir die Zahl z.B wenn ich 5 eingabe gibt er die 4 aus.
was darauf hinweist, dass Python Arrays offensichtlich mit dem Index 0 beginnt.
doch dieses gibt mir die Zahl z.B wenn ich 5 eingabe gibt er die 4 aus.
Wie erwähnt , liegt das daran, dass in Python der Erste Index immer 0 ist. 1 hat bei dir also den Index 0, 2 den Index 1, etc.
Hier ist aber zu achten das dieses Programm keine Fehler auslöst, wenn die Zahl nicht gefunden wird.
Das liegt an diesem Abschnitt:
zahl = liste.count(eingabe)
if zahl != 10:
[...]
liste.count(eingabe) zählt, wie oft die zahl eingabe in der Liste vorkommt. Der Wert ist somit hier entweder 0 (wenn der Wert in der Liste nicht vorkommt) oder größer gleich 1 (wenn der Wert vorkommt, bei deiner Liste kommt jede Zahl jedoch höchstens 1 mal vor)
Du solltest also lieber
if zahl == 0:
Nutzen, oder
if eingabe not in liste:
Dann brauchst du die Zeile nicht, wo die Zahl gezählt wird.