Seite 1 von 1

none entfernen

Verfasst: Freitag 29. Mai 2020, 14:55
von John Fischer
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))

Re: none entfernen

Verfasst: Freitag 29. Mai 2020, 16:38
von snafu
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.

Re: none entfernen

Verfasst: Samstag 30. Mai 2020, 09:43
von Sirius3
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

Code: Alles auswählen

for i in L:
    if a in i:
        print(i)
Kann niemand erraten, was das bedeuten soll. Bei

Code: Alles auswählen

for adresse in addressen:
    if suchwort in adresse:
        print(adresse)
ist alles klar. Gewöhn Dir also gleich an, sprechende Namen zu verwenden.

Re: none entfernen

Verfasst: Samstag 30. Mai 2020, 12:52
von __blackjack__
@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):

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()

Re: none entfernen

Verfasst: Sonntag 31. Mai 2020, 11:46
von John Fischer
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