Ich bin sehr neu zu Python so mit mir zu tragen. Ich habe diesen Code, unter dem ich eine while-Schleife eingefügt habe, um sicherzustellen, dass jedes Mal, wenn ein Name angegeben wird, überprüft, ob der Name in der CSV ist und wenn nicht, gibt es einen Fehler und fragt nach einem neuen Namen. Mein Problem ist, dass ich nicht aus der Schleife herauskommen kann. Selbst mit einem neuen Namen, den ich wirklich kenne, ist er in der CSV immer noch in der Schleife. Meine Frage ist, wie kann ich diesen Code erhalten, um durch eine Schleife zu laufen und zu überprüfen, dass der Name dort ist? Jede Hilfe wäre großartig. Ich bin sogar offen, den gesamten Code zu ändern, wenn es eine bessere Möglichkeit gibt, dies zu schreiben.Stuck in einer While-Schleife in Python
Hier ist, was ich habe:
import csv
full_name = input('Enter your full name: ').lower()
with open('Report1.csv') as csvfile:
hour_summation = {}
read_csv = csv.reader(csvfile, delimiter=',')
for row in read_csv:
while (' '.join((row[0], row[1]))).lower() != full_name.strip().lower():
print('Name is not in system')
full_name = input('Enter your full name: ').lower()
if(' '.join((row[0], row[1]))).lower() == full_name.strip().lower():
hour_summation[row[2]] = hour_summation.get(row[2], 0) + int(float(row[3]))
print('This is {} full hours report:'.format(full_name))
for k, v in hour_summation.items():
print(k + ': ' + str(v) + ' hours')
Hier das Ergebnis ist, wenn ich einen Eingang geben: FYI. Steve Miller ist nicht in der CSV-Datei, so dass die erste Antwort korrekt ist. Allerdings ist Sri Mantri in der Datei und es sollte weitergehen und alle Einträge unter ihrem Namen ausdrucken.
Enter your full name: Steve Miller
Name is not in system
Enter your full name: Sri Mantri
Name is not in system
So sollte die Ausgabe aussehen, wenn der Code ausgeführt wird.
Enter your full name: Sri mantri
This is sri mantri full hours report:
Beeline Blank: 28 hours
SRV-0001 Service Requests for Base and Direct Services: 4 hours
SUP-0001 Support Requests with a CISM Ticket: 129 hours
SUP-2503 Web Application Maintenance & Support: 72 hours
0026184229 Margin Controlling Java Rewrite: 4 hours
0033472751 PRE-AFE 2017 - CMS Enhancements: 2 hours
0033472863 PRE-AFE 2017 - BPM Enhancements: 67 hours
APP-10008 Pre-Series (Non-Mainframe): 4 hours
APP-10146 Logistics (Non-Mainframe): 3 hours
APP-10195 Vehicle Labor System (Mainframe): 3 hours
APP-10354 Web PartsPro (Non-Mainframe): 1 hours
APP-10431 VIPService (Non-Mainframe): 1 hours
APP-10432 VIPService (Mainframe): 3 hours
APP-10536 Truck Invoice Adjustments (Mainframe): 2 hours
und die csv wie folgt aussieht:
First Name Last Name Activity Hours
Sri Mantri SUP-2503 Web Application Maintenance & Support 11
Sri Mantri SUP-2503 Web Application Maintenance & Support 3
Sri Mantri SUP-2503 Web Application Maintenance & Support 5
Sri Mantri SUP-2503 Web Application Maintenance & Support 2
Jeff Moore SUP-2503 Web Application Maintenance & Support 3
David Ayers SUP-2507 NAFTA MFTS OS Support 10
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 4
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 3
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 1
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 1
Jeff Moore 0024480049 Fuel Tanks (infrastructure) - time tracking 1
Jeff Moore 0024480049 Fuel Tanks (infrastructure) - time tracking 1
Jeff Moore 0024480049 Fuel Tanks (infrastructure) - time tracking 4
die 'while'-Schleife mit dem zweiten' input' befindet sich innerhalb der for-Schleife, so dass nur die aktuell bearbeitete Zeile betrachtet wird. –
Also denkst du, ich sollte die for-Schleife im Allgemeinen entfernen? – stevenmiller
@stevenmiller Ihre CSV-Datei enthält keine Kommas. – Goyo