Ständig auffordert Benutzer für die Eingabe in Python
Ziel: * Schreiben Sie ein python-Programm, dass Sie wiederholt aufgefordert, für die Eingabe einer positiven Zahl, bis die Summe der zahlen ist größer als 179. Verwenden Sie mindestens drei Module/Funktionen in Ihrer Lösung.
* Die grösste Zahl darf nicht mehr als 42.
* Wenn die Summe der zahlen übersteigt 179, drucken Sie die Summe der zahlen, die größte Zahl und die kleinste Zahl eingegeben.
Ich brauche nur einige Hinweise, speziell für die "input_numbers" - Modul. Es muss ein einfacher Weg, dies zu tun, als eine variable für jede Zahl. Der code ist nicht vollständig. Ich habe noch nicht einmal begonnen, auf die beiden anderen Module noch. Vielen Dank im Voraus.
def input_numbers():
while True:
num1 = raw_input("Enter a positive integer no greater than 42 ")
if num1 <= 0:
print "That is not a positive integer. Try again "
elif num1 > 42:
print "The number cannot exceed 42. Try again "
num2 = raw_input("Enter another positive integer ")
if num2 <= 0:
print "That is not a positive integer. Try again "
elif num2 > 42:
print "The number cannot exceed 42. Try again "
num3 = raw_input("Enter another positive integer ")
if num3 <= 0:
print "That is not a positive integer. Try again "
elif num3 > 42:
print "The number cannot exceed 42. Try again "
num4 = raw_input("Enter another positive integer ")
if num4 <= 0:
print "That is not a positive integer. Try again "
elif num4 > 42:
print "The number cannot exceed 42. Try again "
num5 = raw_input("Enter another positive integer ")
if num5 <= 0:
print "That is not a positive integer. Try again "
elif num5 > 42:
print "The number cannot exceed 42. Try again "
elif sum(num1, num2, num3, num4, num5) > 179:
print_numbers()
add_numbers()
def add_numbers():
print_numbers()
def print_numbers():
input_numbers()
- Nur als Anmerkung, die
homework
tag ist in den Prozess entfernt werden, und also sollte es nicht mehr verwendet werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie knock out alle drei Funktion Anforderungen durch die Kapselung jeder Schritt des Programms. Anstatt der Schleife innerhalb einer Funktion, werden wir main control loop, und wir Steuern den Fluss durch die übergabe von Daten in die und aus der Funktionsaufrufe.
Lassen Sie uns Bearbeiten Sie Ihre
input_numbers()
- Funktion ein bisschen.So, anstatt input_numbers die Schleife Steuern, sowie die Verarbeitung von Eingaben und Validierung, müssen wir es tun nur das, was sein name impliziert: Es fragt für die Eingabe, überprüft Sie, und dann, wenn es gut ist, es gibt den Wert an den Aufrufer, aber wenn es schlecht ist, schreibt er eine Nachricht und ruft sich selbst erneut auf die Benutzer eingeben können, gute Eingabe.
Die nächste Funktion werden wir gerade aus der Liste der Anforderungen. Aus all den zahlen, die der Benutzer eingibt, wir müssen finden der größte. Aus der Sprache allein, können wir feststellen, dass wir durch eine Reihe von zahlen, und somit ist dies ein guter Ort, um zu brechen eine Liste. Angenommen, wir speichern alle Benutzer-Eingabe in einer Liste an, wir können dann passieren, dass die Liste auf eine Funktion, und führen Sie Operationen auf Sie, wie so.
Setzen wir das erste element der Liste in eine variable
highest
und überprüfen Sie dann alle anderen Elemente in der Liste vor, der Ausgangswert. Wenn wir einen finden, der ist größer, wir weisen diehighest
variable zu dem element, das grösser war. Wenn wir das tun dies für jedes element in der Liste, die Nummer im inneren des höchsten wird jetzt sein, nur dass die höchste Zahl, und so werden wir es zurück an das Hauptprogramm.Ähnlich, wir können das gleiche tun für die Suche nach dem kleinsten.
Schließlich kommen wir zu unserem main-loop. Hier deklarieren wir eine leere Liste
number_list
zu speichern, werden alle zahlen. Und verwenden wir die Summe, die als unsere Schleifenbedingung.In den Körper der Schleife rufen wir unsere get_input_number() und fügen Sie das Ergebnis mit der Liste die wir gemacht haben. Sobald die Summe der zahlen in der Liste überschreiten, 179, die while-Schleife beendet, und wir können endlich zeigen Sie dem Benutzer die Ergebnisse.
Hier können wir die
get_greatest_number
undget_smallest_number
wir gemacht, und wir geben Ihnen die Liste von zahlen als argument. Sie werden loop-obwohl die Listen, und dann wieder die entsprechenden Werte für die print-Anweisungen.Ja, natürlich, es gibt einen besseren Weg, als eine variable für jede Zahl. Lagern Sie Sie in einer Liste. Speichern Sie Sie in einer Liste macht auch das finden Ihrer Summe die höchsten und niedrigsten Wert einfach (es gibt eingebaute Funktionen, die für dieses).
Als ein weiterer Hinweis, Sie möchten zwei Schlaufen, eine innerhalb der anderen. Die äußere Schleife hält der Benutzer die Eingabe von zahlen, bis deren Summe größer als 179. Die innere Schleife hält der Benutzer die Eingabe eines single Zahl, bis es zwischen 1 und 42 inclusive.
Können Sie wiederholt eine Umfrage der Zahl in einer Schleife, und fügen Sie die Eingaben in einer Liste, z.B.
hier einige bekannte tricks:
return min(your_num_list), max(your_num_list)
...min()
undmax()
sind integrierte Python-Funktionen.Wenn Sie schreiben eine eigenständige Python-Programm, es ist eine gute übung, verwenden Sie eine main-Funktion. es erlaubt Ihnen leicht fügen Sie einige unit-tests, verwenden Sie Ihren Funktionen oder Klassen aus anderen Modulen (wenn Sie Sie importieren), etc.
Und wie andere schon sagten, ist es eine gute Idee, um eine Liste zu erstellen und fügen Sie ein neues element, um es jedes mal, wenn der Benutzer eine gültige Zahl (bis die Summe der zahlen axceeds 179). Wenn der Benutzer einen falschen Wert eingegeben, dann eben nicht Anhängen, alles auf der Liste, und fahren Sie mit der nächsten iteration (so wird der Benutzer aufgefordert, eine Zahl wieder).
Also im Grunde könnte es so Aussehen:
In der Tat, ich kann mir vorstellen, eine situation, wo Sie möchten, um zu speichern nur die Summe der zahlen, die kleinste Zahl und die größte Zahl in drei Variablen und aktualisieren Sie diese Variablen in jeder iteration (aktuelle Zahl aus der Summe und vergleichen Sie es mit den derzeit bekannten kleinsten und größeren zahlen und aktualisieren Sie die entsprechenden Variablen wenn notwendig), aber in diesem Fall ist die längste Liste, die Sie möglicherweise haben kann, ist nur 180 Elemente (wenn alle zahlen 1 und der Benutzer nicht 0 eingeben oder Sie geändert haben, das Programm zu verweigern, die die Eingabe von 0), die sehr kleine Menge von Elementen zu einer Liste in Python. Aber wenn Sie zu tun hatte, mit wirklich großen Mengen an zahlen, würde ich empfehlen zu wechseln, um eine Lösung wie diese.
Danke an alle die antworteten. Ich habe geschrieben, die folgenden code und es funktioniert fast perfekt, außer dem letzten Modul. Wenn Sie das Programm beenden, nachdem der erste ausgeführt (durch drücken von 0), wird Sie verlassen, aber wenn man es ein zweites mal drücken 0 wird es nicht beenden. Werde es einfach zurück an den Anfang des Programms. Ich weiß nicht, warum.
Hinweis: Die Belegung hat verschiedene Anforderungen, die ich hatte einbauen in meinen code. Daher die unnötige Module, Globale Variablen und Kommentare.