2016-07-28 15 views
1

Ich frage mich, ob Sie helfen können, weil ich seit einer guten halben Stunde habe und ich bin völlig verwirrt, ich denke, ich muss etwas verpassen, so hoffe ich Sie können etwas Licht darauf werfen.Minimale und maximale Abfrage nicht richtig funktioniert (Python 3.5)

In diesem Bereich meines Programms kodiere ich eine Abfrage, die eine Liste von Tupeln für das Gehalt der Person suchen wird. Jedes Tupel in der Liste ist ein separater Datensatz von Personendetails, daher habe ich zwei Indizes verwendet; eine für die Aufzeichnung, die durchlaufen wird, und eine für das Gehalt des Mitarbeiters. Was ich anstrebe, ist, dass das Programm ein Mindest- und Höchstgehalt verlangt und dass das Programm die Namen der Angestellten ausgibt, die in diesem Gehaltsbereich sind.

Alles schien gut zu funktionieren, bis ich feststellte, dass die Abfrage bei Eingabe des Wertes '100000' als Maximalwert nichts ausgeben würde. Völlig verblüfft versuchte ich in '999999' einzutreten, was dann funktionierte und alle Aufzeichnungen wurden gedruckt. Das einzige, woran ich denken kann ist, dass das Programm die zusätzliche Ziffer ignoriert, was ich nicht herausfinden konnte, warum das wäre ?!

Unten ist mein Code für diesen spezifischen Abschnitt und Ausgabe für einen maximalen Wert von 999999 (Ich würde es vorziehen, nicht das gesamte Programm einfügen, wie dies für ein Kursarbeitsprojekt ist und ich möchte verhindern, dass jemand auf dem gleichen Kurs meine möglicherweise kopiert Arbeit, tut mir leid, wenn dies meine Frage unklar macht!):

Das maximale Gehalt von allen Aufzeichnungen ist 55000, also warum es nicht Sinn macht, dass ein Minimum von 0 und maximal 100000 nicht funktioniert, aber ein Maximum von 999999 tut es!

Wenn weitere Informationen benötigt werden, fragen Sie bitte! Das scheint wahrscheinlich unklar zu sein, aber wie ich oben gesagt habe, möchte ich nicht, dass irgendjemand aus der Klasse plagiiert und meine Arbeit deswegen für ungültig erklärt wird! Also habe ich versucht, dies zu fragen, ohne all meinen Code hier zu posten!

Antwort

1

Angesichts Ihrer Verwendung der print-Funktion (anstelle der Python 2 print-Anweisung), sieht es so aus, als ob Sie Python 3-Code schreiben. In Python 3 gibt input eine str zurück. Ich schätze, Ihre Daten speichern auch die Gehälter als str (sonst würde der Vergleich eine TypeError auslösen). Sie müssen beide gespeicherten Werte und das Ergebnis von input in int umwandeln, damit es numerische Vergleiche und keine ASCII-Vergleiche durchführt.

+0

Danke! Ich verstehe, was Sie sagen, ist richtig, aber ich bin ein wenig unsicher, wie ich die gespeicherten Werte in Ganzzahlen umwandeln, weil die Kursarbeit erfordert, dass ich die Datensätze aus einer TXT-Datei importieren, so kommen sie als Str-Typen und Ich bin mir nicht sicher, wie ich das ändere! – RonB7

+0

Ich konvertierte die Benutzereingabe einfach, indem ich sie in 'int (Eingabe (" "))' änderte, so dass ich mir keine Sorgen machen muss über – RonB7

+0

@RJB: In dem Code, der die '.txt' Datei analysiert, müssen Sie sicherstellen, dass es ist Konvertieren der relevanten Werte in "int". Zum Beispiel, wenn die Datei nur durch Leerzeichen getrennten Text ist, könnten Sie 'record = line.split()', 'record [2] = int (record [2])', 'tuplist.append (tuple (record)) ' – ShadowRanger

1

Wenn Sie von der Standardeingabe in Python einlesen, egal welche Eingabe Sie erhalten, erhalten Sie die Eingabe als Zeichenfolge. Das bedeutet, dass Ihre Vergleichsfunktion zu folgendem Ergebnis führt:

if tuplist[x][2] > "0" and tuplist[x][2] < "999999" : 

Können Sie sehen, was das Problem jetzt ist? Weil es eine Hausaufgabe ist, möchte ich dir nicht gleich die Antwort geben.

Verwandte Themen