Hilfe bei Filialfinder

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
FelixGoesPython
User
Beiträge: 17
Registriert: Mittwoch 25. September 2019, 08:15

Hallo Zusammen,

ich versuche einen Filialfinder zu bauen. Ich lese aus einer CSV die benötigten Daten aus. Dann Frage ich den User nach der Postleitzahl und zeige ihm die vorhandenen Filialen in seiner PLZ mit einer Kennzahl 1,2,3,4 usw. zB. 1 Supermarkt Hauptstraße ; 2 Supermarkt Poststraße usw. Dann kann der User eine Filiale über die Kennzahl auswählen.

Ab hier habe ich Probleme: Python soll dann die Kennzahl 1,2,3,4 in der Liste abgleichen und den Wert in der Spalte FilialID in der variable filial_id speichern.

Code: Alles auswählen

import csv

suchergebnis = []
anzahl_suchergebnisse = 0
kennziffer = 0
filial_id = 0

plz = input('Bitte Postleitzahl eingeben? ')

with open('laden.csv', 'r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';')

    next(csv_reader)

    for line in csv_reader:
        if line[3] == plz:
            anzahl_suchergebnisse += 1
            suchergebnis.append(f'{anzahl_suchergebnisse} {line[0]} {line[1]}')
            print(anzahl_suchergebnisse, line[1])
print ()
print('Es wurden', anzahl_suchergebnisse, ' Filialen für dich in ', plz, ' gefunden.' )

kennziffer = input('Bitte gebe die Kennziffer ein: ')
So siegt das Ergebnis aus
Bitte Postleitzahl eingeben? 00000
1 Hauptfiliale
2 Filiale an der Post

Es wurden 2 Filialen für dich in 00000 gefunden.
Bitte gebe die Kennziffer ein: 1

Und so sieht das CSV File aus
FilialID;Laden;Straße;PLZ;Stadt;Land;EMailLaden;Gelistet
1;Hauptfiliale;Hauptstraße 5;00000;Musterstadt;DE;mail@mail.de;True
2;Filiale an der Post;Poststraße 12;00000;Musterstadt;DE;mail@mail.de;True
3;Filiale Nebenstraße;Nebenstraße 64;11111;Musterstadt;DE;mail@mail.de;True
4;Filiale am Bahnhof;Bahnhofstraße 12;11111;Musterstadt;DE;mail@mail.de;True

Hat Jemand eine Idee?
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@FelixGoesPython: Statt in ›suchergebnis‹ Strings zu speichern, solltest Du einfach den Eintrag, wie er aus der csv-Datei kommt speichern. Nächster Schritt wäre das Filtern von der Ausgabe zu trennen und in Funktionen auszulagern.
FelixGoesPython
User
Beiträge: 17
Registriert: Mittwoch 25. September 2019, 08:15

Sirius3 hat geschrieben: Samstag 5. Oktober 2019, 16:07 @FelixGoesPython: Statt in ›suchergebnis‹ Strings zu speichern, solltest Du einfach den Eintrag, wie er aus der csv-Datei kommt speichern. Nächster Schritt wäre das Filtern von der Ausgabe zu trennen und in Funktionen auszulagern.
Ich habe nun die Liste "suchergebnis" entfernt und gebe das Ergebnis zur PLZ-Suche direkt mit print Befehl aus. Als nächstes frage ich nach der Kennziffer. Die Variable "Kennziffer" gibt an, das wievielte Suchergebnis zu einer PLZ-Suche gemeint ist Dabei bedeutet eine "1" der User wählt das erste Ergebnis, eine "2" bedeutet zweite Ergebnis, eine "3" steht für drittes, usw.

Code: Alles auswählen

import csv

anzahl_suchergebnisse = 0
kennziffer = 0
filial_id = 0

plz = input('Bitte Postleitzahl eingeben? ')

with open('laden.csv', 'r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';')

    next(csv_reader)

    for line in csv_reader:
        if line[3] == plz:
            anzahl_suchergebnisse += 1
            print(anzahl_suchergebnisse, line[1])
print ()
print('Es wurden', anzahl_suchergebnisse, ' Filialen für dich in ', plz, ' gefunden.' )

kennziffer = input('Bitte gebe die Kennziffer ein: ')
Die Ausgabe sieht so aus:
Bitte Postleitzahl eingeben? 11111
1 Filiale Nebenstraße
2 Filiale am Bahnhof

Es wurden 2 Filialen für dich in 11111 gefunden.
Bitte gebe die Kennziffer ein:
Kann ich nach der Variablen "Kennziffer" in der csv suchen und dann den Wert einer Spalte in der jeweilige Zeile speichern bzw. ausgeben?
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

Warum hast Du `suchergebnis` entfernt? Das brauchst Du doch, um im nachhinein herauszufinden, was die Kennziffer bedeutet?
Antworten