@ _blackjack_ :
darum geht's eigentlich :
1. Mein Post vom Donnerstag 21. Februar 2019, 21:25:
2. Antwort von Sirius3:
Zeile 60/90/107/145: Funktionen sind keine Sprungmarken. Einfach die Funktion zurückkehren lassen.
3. Mein Post vom Freitag 22. Februar 2019, 00:03
=> ich habe mit dem Begriff 'Sprungmarken' nicht angefangen, und jeder ist halt darauf eingestiegen, wahrscheinlich, weil ich sie im Kontext falsch verwendet habe ...
=> auf mein Post vom Freitag 22. Februar 2019, 00:03 habe ich keine konkrete Antwort bekommen (return main(), etc.)
=> es hat bereits vorher funktioniert (sofern ich das beurteilen kann), dann kam das Thema mit den Sprungmarken auf ...
ich bin momentan generell wieder etwas verunsichert. In Python geht es ja u.a. um die schrittweise Verfeinerung, d.h. auch Code, der beispielsweise doppelt ist, in Funktionen/Methoden 'auszulagern' (falscher Begriff ?), etc.. Ob diese Funktionen/Methoden etwas zurückliefern, sei jetzt mal nicht so wichtig. Um aber nun diese (ausgelagerten) Funktionen/Methoden 'ans Laufen' zu bringen, muss ich sie doch in der jeweils anderen Funktion (aus der sie ausgelagert wurden) aufrufen.
Beispielsweise:
Code: Alles auswählen
def charteintraege_loeschen(charts, auswahl):
while True:
print('*** Einträge löschen ***')
## print(charts) #44: Debugging
chartliste_anzeigen(charts, auswahl)
delete = input('Gebe die Platznummer des zu löschenden Eintrags ein : ') #46: eval() oder int() verursachen ValueError (int ... base 10)
if not delete: #47 zu #46: erlaubte Eingaben: natürliche Zahlen >= 1 bis *len(charts)*
break #48: als Einzeiler schreiben ?
try:
delete = int(delete) -1 #50: siehe #46
if delete < 0 or delete >= len(charts): #51: erlaubte Eingaben: natürliche Zahlen >= 1 bis *len(charts)*
print('Diese Eingabe ist ungültig !')
break
del charts[delete]
print('Der Eintrag wurde soeben gelöscht !')
except (IndexError, ValueError, TypeError):
print('Diese Eingabe ist ungültig !')
break #58: bei der Verwendung von 'continue': speichert bei fehlerhaften Eingaben (delete < 1)
charteintraege_speichern(charts)
return main()
def charteintraege_modifizieren(charts, auswahl):
while True:
print('*** Einträge ändern ***')
## print(charts) #67: Debugging
chartliste_anzeigen(charts, auswahl)
modify = input('Gebe die Platznummer des zu ändernden Eintrags ein : ') #69: eval() oder int() verursachen Error
if not modify: #70 Nachtrag zu #69: ValueError: invalid literal for int() with base 10: ''
break
try:
modify = int(modify) -1 #73: siehe #69; Zuweisung wegen Indizierung [Index -1]
if modify < 0 or modify >= len(charts):
print('Diese Eingabe ist ungültig !')
break
except (IndexError, ValueError, TypeError):
print('Diese Eingabe ist ungültig !')
break #79: bei Verwendung von 'continue': speichert bei fehlerhaften Eingaben (modify < 1)
stimme_neu = charts[modify][0] ## TO DO: ohne Indexing lösen ?!
titel_neu = input('trage den zu ändernden Titel ein, ansonsten [Enter] : ')
if not titel_neu: #82: als Einzeiler schreiben ?
titel_neu = charts[modify][1] ## TO DO: ohne Indexing lösen ?!
print('neuer Titel:', titel_neu)
interpret_neu = input('trage den zu ändernden Interpreten ein, ansonsten [Enter] : ')
if not interpret_neu: #86: als Einzeiler schreiben ?
interpret_neu = charts[modify][2] ## TO DO: ohne Indexing lösen ?!
print('neuer Interpret:', titel_neu)
charts[modify] = (stimme_neu, titel_neu, interpret_neu) #89: Klammern sind unnötig, dienen der Lesbarkeit
charteintraege_speichern(charts)
return main() #91: nötig, da sonst Programm beendet wird
haben diese beiden Funktionen stellenweise ähnliche/gleiche Code-Zeilen. Würde ich diese jetzt in einer separaten Funktion/Methode 'auslagern', dann müßte ich diese ausgelagerte Funktion doch jeweils von den beiden anderen Funktionen aufrufen ... (dann kam das Thema 'Sprungmarken' auf ...)