Vereinfachung des Codes zum löschen von Objekten in Listen
Verfasst: Dienstag 8. August 2006, 10:25
Hallo!
Ich habe letzte Woche angefangen mir selbst das Programmieren beizubringen und nach vielen Empfehlungen habe ich mir Python ausgesucht. Jetzt baue ich an einem kleinen Programm, dass Listen erstellt und sie in einer Textdatei ausgibt, es sieht wiefolgt aus:
Genauer geht es mir um folgende Zeilen:
Das Objekt, dass ich aus der Liste löschen will lässt sich zwar recht einfach durch eine if/elif Anweisung bestimmen, doch muss ich ja so für jedes Objekt eine eigene Anweisung einfügen, und wenn die Liste länger werden soll, gibt das eine ellenlange elif-Liste.
Die Frage ist, ob es dafür einen einfacheren Code gibt. Ich habe schon folgendes ausprobiert:
Allerding bekomme ich dann folgende Meldung:
Gibt es eine Möglichkeit dieses Problem zu umgehen?
Danke im Vorraus
Sagi
Ich habe letzte Woche angefangen mir selbst das Programmieren beizubringen und nach vielen Empfehlungen habe ich mir Python ausgesucht. Jetzt baue ich an einem kleinen Programm, dass Listen erstellt und sie in einer Textdatei ausgibt, es sieht wiefolgt aus:
Code: Alles auswählen
#!/usr/bin/python
print 'Hallo, wir erstellen jetzt eine Liste!'
liste = []
dazu = raw_input('Was moechten Sie hinzufuegen? ') # Das erste Objekt der Liste entgegennehmen
liste.append(dazu) # Hinzufuegen des ersten Objekts
print dazu, 'wurde in die Liste aufgenommen!'
nochmal = True
while nochmal: # Schleife, die weitere Objekte entgegen nimmt
mehr = raw_input('Moechten sie ein weiteres Objekt der Liste hinzufuegen? ')
if mehr == 'ja':
wasmehr = raw_input('Und was soll hinzugefuegt werden? ')
liste.append(wasmehr)
print wasmehr, 'wurde der Liste hinzugefuegt!'
print liste
else:
nochmal = False
else:
print 'Die Liste ist jetzt fertig, sie enthaelt', len(liste), 'Objekte!'
print liste
korrekt = raw_input('Ist die Liste korrekt? ') # Ueberpruefung der Liste mit Aufforderung zur Bestaetigung oder Ablehnung
if korrekt == 'nein':
mehrloeschen = True
while mehrloeschen: # Schleife um Objekte aus der Liste zu entfernen.
loeschen = raw_input('Welches Objekt moechten sie loeschen? ')
if loeschen == liste[0]:
del liste[0]
elif loeschen == liste[1]:
del liste[1]
elif loeschen == liste[2]:
del liste[2]
elif loeschen == liste[3]:
del liste[3]
print loeschen, 'wurde geloescht!'
print liste
schleife = raw_input('Moechten sie ein weiteres Objekt entfernen? ')
if schleife == 'nein':
mehrloeschen = False
print 'Gut, jetzt ist die Liste endgueltig fertig! Sie wird als Textdatei gespeichert!'
else:
print 'Gut, jetzt ist die Liste endgueltig fertig! Sie wird als Textdatei gespeichert!'
resstring = ", ".join(liste) # Umwandlung der Liste in einen String zur Ausgabe in einer Datei
f = file('Liste.txt', 'w') # Ausgabe der Liste in eine Textdatei
f.write(resstring)
f.close()
Genauer geht es mir um folgende Zeilen:
Code: Alles auswählen
while mehrloeschen: # Schleife um Objekte aus der Liste zu entfernen.
loeschen = raw_input('Welches Objekt moechten sie loeschen? ')
if loeschen == liste[0]:
del liste[0]
elif loeschen == liste[1]:
del liste[1]
elif loeschen == liste[2]:
del liste[2]
elif loeschen == liste[3]:
del liste[3]
print loeschen, 'wurde geloescht!'
print liste
Die Frage ist, ob es dafür einen einfacheren Code gibt. Ich habe schon folgendes ausprobiert:
Code: Alles auswählen
liste = ['Affe', 'Wiesel']
loeschen = raw_input('Welches Objekt moechten sie loeschen?')
for loeschen in liste:
del liste[loeschen]
Code: Alles auswählen
Traceback (most recent call last):
File "testi.py", line 6, in ?
del liste[loeschen]
TypeError: list indices must be integers
Danke im Vorraus
Sagi