2016-08-03 37 views
0

Ich bin eine Funktion kodieren, die eine Suchabfrage für eine Liste von Tupeln (Mitarbeiterakten) und dann auf der Grundlage der Abfrageparameter gibt. Zum Beispiel, in meinem Problem suche ich eine Gehaltsspanne mit einem Minimum von 30000 und einem Maximum von 100000, würde ich erwarten, dass dies die Namen der Mitarbeiter innerhalb dieser Gehaltsspanne ausgibt, aber es gibt stattdessen die Ausgabe von keine Ergebnisse gefunden, Das ist falsch, da es viele Mitarbeiter in diesem Gehaltsbereich gibt.Programmausgabe ist nicht wie erwartet - Suche nach int-Werten in einer Liste von Tupeln

Als Vergleich würde ein Minimum von 0 und ein Maximum von 100000 alle Datensätze ausgeben, was korrekt ist, aber wenn das Minimum über 30000 gesetzt wird, gibt es immer kein Ergebnis aus, was tatsächlich korrekt ist, da es viele Gehälter gibt in der Liste der Tupel, die über 30000 sind.

Unten ist der Teil des Codes, von dem ich glaube, dass er das Problem verursacht (Den ganzen Code nicht, da dies ein Kursarbeitsprojekt ist und ich Plagiat auf meiner Arbeit nicht fördern will):

Dies sollte tatsächlich Ergebnisse ausgeben, da es Mitarbeiter in diesem Gehaltsbereich gibt, aber es ist offensichtlich, dass etwas im Code falsch ist, und ich kann nicht sehen, was thi s ist!

Ich hoffe jemand kann helfen, das hat mich eine Weile gestört und ich finde wirklich nicht die Lösung dafür!

Antwort

1

Ich denke, Ihr Programm wird beendet, nachdem das erste Tupel verarbeitet wurde. Ist das erste Tupel außerhalb der Gehaltsspanne? Wenn ja, überspringt es die if-Anweisung und geht zum elif. QuerFound ist immer noch falsch und x ist immer noch 0, also wird gedruckt und beendet.


Mein Vorschlag ist, Ihre gesamte while-Schleife mit dieser for-Schleife zu ersetzen:

for t in editTup: 
    sal = int(t[2]) 
    if sal > salMin and sal < salMax: 
     print(t[4] + " " + t[3]) 
     querFound = True 
if not querFound: 
    print('No results found') 
+0

Sie könnten richtig sein, das erste Gehalt ist 27500 – RonB7

+0

Ja, Sie in der Tat richtig, 27501 gibt nichts aus, aber 27499 Ausgaben wie erwartet, wie würde ich das beheben? – RonB7

+0

Siehe oben Bearbeiten. Wenn Sie jedoch Ihren Code näher bei dem haben möchten, mit dem Sie begonnen haben, setzen Sie einfach 'if querFound == false' außerhalb der while-Schleife. – Noam