2016-09-26 4 views
1

Okay, ich praktiziere für Schleifen in Python und ich fragte mich, wie könnte ich eine Benutzereingabe 10 Intergers dann würde es die kleinste Ausgabe. Ich würde wissen, wie dies zum Beispiel mit einer while-Schleife zu tun:Für Schleifen in Python (Output Kleinster Eingang)

Smallest = 0 
count = 0 
while count < 10: 
    Number = int(input("Enter a number >> ")) 
    if Number < Smallest: 
     Smallest = Number 
    count = count + 1 

print("{0} is the biggest value you have entered".format(Smallest)) 

Aber wie mache ich es in einem for-Schleife-Format? Hier ist, was ich bisher:

for i in range(10): 
    Number = int(input("Enter a Number >> ")) 
    if Number < Smallest: 
     Smallest = Number 

print("{0} is the smallest value you have entered.".format(Smallest)) 
+2

'min (int (Eingabe (" Geben Sie eine Nummer >> ")) für i in Bereich (10))' –

+0

@Chris_Rands sollten Sie das definitiv als Antwort geben, anstatt einen Kommentar, denn es sieht wirklich glatt aus: D –

Antwort

2

Was haben Sie da, außer der Tatsache, sollten Sie Smallest initialisieren, ist äquivalent zu der Lösung Ihrer while Anweisung.

Also vorausgesetzt, die while Variante wird als richtig angesehen, die for Variante, die Sie haben, wird ausreichen.

Der Grund, warum ich es qualifiziere, ist, weil Smallest zu Null Initialisieren ist eigentlich die falsche Sache zu tun. Wenn Ihre zehn Zahlen zum Beispiel alle größer als zwanzig sind, bleibt Smallest auf Null und gibt Ihnen die falsche Antwort.

Eine Möglichkeit, dieses Problem zu beheben (in beiden Varianten) ist Ihre if Aussage zu ändern:

if i == 0 or Number < Smallest: 

das unabhängig Smallest erstes Mal durch die Schleife gesetzt wird (obwohl es count in der while Variante sein sollte, da das verwendet eine andere Schleifensteuerungsvariable).


Natürlich, wie Sie mehr und mehr über die Sprache zu lernen, werden Sie über das Konzept der Dinge kommen, die mehr „Pythonic“ sind als andere. Ein Beispiel hierfür ist die eher kurz und knapp:

Smallest = min(int(input("Enter a Number >> ")) for i in range(10)) 

, die die Notwendigkeit völlig für ein explizite Check-und-Ersetzen-Strategie entfernt (das ist noch zu tun, aber unter der Decke der min-Funktion).

+0

Ich möchte aber eine for-Schleife verwenden? –

+0

@Sam, ich sage * dir, dass du die 'for' -Schleife benutzen sollst, werde ich klären. – paxdiablo

1

Wenn Sie die kleinste der Eingangsnummern erhalten möchten, müssen Sie mit einem Minimum ein bisschen größer als 0 beginnen ... und das ist ein Problem, das Sie mit Ihrer While-Schleife haben. Es funktioniert nur, wenn der Benutzer mindestens eine negative Zahl eingibt, andernfalls wird 0 zurückgegeben.

Hier ist, was ich vorschlagen:

smallest = float("inf") 
for i in range(10): 
    number = int(input("Enter a Number >> ")) 
    if number < smallest: 
     smallest = number 
print("{0} is the smallest value you have entered.".format(smallest)) 

Beachten Sie, dass ich nicht die Variablen Kapital haben, denn für mich ist es ihnen wie Klassen aussehen lässt. ^^

+0

Was ist eine Klasse? –

+0

Eine Klasse wird in der objektorientierten Programmierung verwendet. Wenn du nicht weißt, was es ist, mach dir keine Sorgen. Sie müssen OOP nicht in Python verwenden. –

3

Initialisiere deine kleinste Variable und alles wird funktionieren!

Smallest = int(input("Enter a Number >> ")) 
for i in range(9): 
    Number = int(input("Enter a Number >> ")) 
    if Number < Smallest: 
     Smallest = Number 

print("{0} is the smallest value you have entered.".format(Smallest)) 
0

Da Sie die kleinsten Werte aus den Eingangswerten vom Benutzer finden es gute Praxis ist, wie unten die kleinste Variable als maximal mögliche ganze Zahl zunächst initialisiert werden.

import sys 
Smallest = sys.maxint 

Dann wird der Rest Ihrer Schleife so richtig funktionieren, wie es ist.

+0

Das ist eine gute Antwort für Python 2, aber der Klammerdruck in der Frage deutet eher auf Python 3 hin. Dort gibt es weder 'maxint' noch die willkürliche Begrenzung dessen, was ein 'int' enthalten kann. Es könnte sich lohnen, darauf hinzuweisen. – paxdiablo

+0

yeah .. danke für das Aufzeigen. Ich habe die Klammern nicht bemerkt. In diesem Fall kann sys.maxsize auch an seiner Stelle verwendet werden. –

+1

Fast: 'maxsize' gibt Ihnen das" natürliche "Limit (wie' 2^64 - 1'), aber das Entfernen von willkürlichen Begrenzungen für Integertypen bedeutet, dass Sie Werte größer als diese haben können - versuchen Sie 'import sys',' x = sys.maxsize', 'print (x)', 'print (x + 1)', um dieses Problem zu sehen. Mit anderen Worten, der Benutzer, der alle Werte größer als "maxsize" eingibt, wird nicht so gut arbeiten, da das Ergebnis "maxsize" ist. – paxdiablo