2017-09-13 2 views
-4

Ich soll eine Funktion max_and_min schreiben, die ein Tupel mit Integer-Elementen als Argument akzeptiert und die größte und kleinste ganze Zahl innerhalb des Tupels zurückgibt. Der Rückgabewert sollte ein Tupel sein, das den größten und kleinsten Wert in dieser Reihenfolge enthält.Python Maximum und Minimum

für das ‚normale‘ Verfahren, kam ich mit:

def max_and_min(values): 
    return (max(values), min(values)) 
    pass 

Jeder kennt das Verfahren unter Verwendung von iterativen mit einer Antwort zu kommen?

+4

Sind Sie für eine for-Schleife zu fragen? – Y0da

+0

Was hast du probiert? Ist es eine Aufgabe? – Lescurel

+3

Was willst du genau? – Harsha

Antwort

0

Wenn Sie max/min finden wollen über Traversal/Iteration - verwenden Sie die folgende Vorgehensweise:

def max_and_min(values): 
    max_v = min_v = values[0] 
    for v in values[1:]: 
     if v < min_v: 
      min_v = v 
     elif v > max_v: 
      max_v = v 

    return (max_v, min_v) 

l = [1,10,2,3,33] 
print(max_and_min(l)) 

Der Ausgang:

(33, 1) 
+1

Ich denke, anstatt die Lösung für das Kopieren zu liefern, sollten wir eher die Lösung erklären, damit das OP versuchen kann, es selbst zu lösen. Dies gilt insbesondere in solchen Fällen, in denen die Frage offensichtlich auf einer Hausaufgabe beruht. –

0

Ihre Lösung funktioniert gut, aber die min und max Methoden sowohl Schleife durch das Tupel, um jeweils die kleinsten und größten Werte zu finden.

Ich denke, was Sie wollen, ist die folgende:

  • definieren zwei Variablen: smallest und biggest und beide auf das erste Element des Tupels
  • Schleife durch das Tupel (for number in values: ...)
  • vergleichen Jeder Wert für die aktuellen smallest und biggest mit den "kleiner als" < und "größer als" > Betreiber jeweils.
  • , wenn eine der Bedingungen erfüllt, die jeweilige Variable auf das aktuelle Element gesetzt (smallest = number)

Nachdem die Schleife beendet ist, werden Sie haben die Variablen smallestbiggest und mit dem jeweiligen min und max gefüllt.

Wenn Sie es weiter optimieren möchten, verwenden Sie eine if ... else... statt zwei if s. Ein maximaler Wert kann nicht gleichzeitig der kleinste Wert sein. (Der einzige Weg, denn das ist nur eine einzige Unterscheidungssignal in dem Tupel und wir bedeckt bereits diesen Fall, indem die Werte auf das erste Element am Anfang zu setzen.)

Verwandte Themen