Hallo,
ich bin grade daran für die Schule ein Sortierverfahren zu schreiben, beim filtern der Liste funktioniert alles, es wird jedoch immer noch non ausgegeben und mir fällt kein Weg ein wie ich das none weg bekommen könnte. wir sind mit Python noch nicht wirklich weit. Ich hab probiert alle nötigen Elemente hier mal einzufügen. Wäre super wenn irgendjemand eine Idee hätte.
Mit freundlichen Grüßen
G = [ ['Donald', 'Trump', 77, 'Washington'], ['Angela', 'Merkel', 63, 'Berlin'], ['Boris', 'Johnson', 49, 'London'] ]
def Liste_filtern(L):
print(L)
print('Um nach Alter zu filter......................1')
print('Um nach Name, Nachname, Wohnort zu filtern...2')
x = int(input('Nach was wollen sie Filtern?: '))
if x == 2:
a = str(input('Geben sie nun den Name, Nachname oder die Adresse an, nach der sie Filtern wollen: '))
for i in L:
if a in i:
print(i)
print('Liste Filtern.............................5')
Eingabe=int(input('Wählen sie durch eingeben der Zahlen eine der Funktionen aus: '))
if Eingabe == 5:
print(Liste_filtern(G))
none entfernen
Deine Funktion macht viele Bildschirmausgaben, aber gibt keinen Rückgabewert an. Trotzdem übergibst du den Funktionsaufruf an print(). In dem Moment erhälst du None (und das passiert ganz zum Schluss), da Python dies ersatzweise nimmt, wenn man nichts anderes dafür programmiert hat. Die Lösung: Ersetze print(Liste_filtern(G)) durch Liste_filtern(G). Dann ist die Rückgabe immer noch None, aber du siehst sie nicht auf dem Bildschirm.
G und L sind schlechte Variablennamen weil sie nur einbuchstabig sind und nichts aussagen. `addressen` wäre besser. Genauso ist x für ein Filterkriterium nicht passend. Noch schlimmer ist i für eine Adresse. Denn i wird üblicherweise für einen Index verwendet.
Bei
Kann niemand erraten, was das bedeuten soll. Bei
ist alles klar. Gewöhn Dir also gleich an, sprechende Namen zu verwenden.
Bei
Code: Alles auswählen
for i in L:
if a in i:
print(i)
Code: Alles auswählen
for adresse in addressen:
if suchwort in adresse:
print(adresse)
- __blackjack__
- User
- Beiträge: 13114
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@John Fischer: Ergänzende Anmerkungen:
Auf Modulebene gehört nur Code der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblichweise in einer Funktion die `main()` heisst.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
`liste_filtern()` passt nicht so ganz zur Tätigkeit der Funktion, denn da würde man eher so etwas erwarten was die eingbaute `filter()`-Funktion macht. Nicht dass da etwas ausgegeben wird.
`input()` liefert bereits eine Zeichenkette, da macht es keinen Sinn noch mal `str()` mit aufzurufen.
Zwischenstand (ungetestet):
Auf Modulebene gehört nur Code der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblichweise in einer Funktion die `main()` heisst.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
`liste_filtern()` passt nicht so ganz zur Tätigkeit der Funktion, denn da würde man eher so etwas erwarten was die eingbaute `filter()`-Funktion macht. Nicht dass da etwas ausgegeben wird.
`input()` liefert bereits eine Zeichenkette, da macht es keinen Sinn noch mal `str()` mit aufzurufen.
Zwischenstand (ungetestet):
Code: Alles auswählen
#!/usr/bin/env python3
def personen_gefiltert_ausgeben(personen):
print(personen)
print("Um nach Alter zu filter......................1")
print("Um nach Name, Nachname, Wohnort zu filtern...2")
filter_auswahl = int(input("Nach was wollen sie Filtern?: "))
if filter_auswahl == 2:
suchbegriff = input(
"Geben sie nun den Namen, Nachnamen, oder den Ort an,"
" wonach sie Filtern wollen: "
)
for person in personen:
if suchbegriff in person:
print(person)
def main():
personen = [
["Donald", "Trump", 77, "Washington"],
["Angela", "Merkel", 63, "Berlin"],
["Boris", "Johnson", 49, "London"],
]
print("Liste Filtern.............................5")
eingabe = int(
input("Wählen sie durch eingeben der Zahlen eine der Funktionen aus: ")
)
if eingabe == 5:
personen_gefiltert_ausgeben(personen)
if __name__ == "__main__":
main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 6
- Registriert: Freitag 29. Mai 2020, 14:46
Vielen Dank für die ganzen hilfreichen Tipps, ich bin noch relativ neu und unser Lehrer lässt uns quasi alleine lernen, mir hilft also ziemlich jeder Tipp weiter