2016-12-01 3 views
1

eine Python-Funktion schreiben, die eine Liste von 100 Zufallszahlen zwischen 0 und 1000 und gibt den Maximalwert nehmen. (Hinweis: Es gibt eine eingebaute Funktion namens max aber so tun Sie es nicht verwenden können.)erstellen Liste der 100 Zufallszahlen, Return Max Value

Hier ist, was ich versucht:

import random 

list = [] 
for i in range(100): 
    list.append(random.randint(0,1000))   

def max(list): 
    #sort list from least to greatest 
    answer = list.sort() 
    #get last item in list (max value) 
    list.pop() 

    return max 

print (max(list)) 

Wie Sie sehen können, was ich bin verwirrt darüber ist, wie man richtig nutzen die sort- und pop-Methoden, um den max-Wert innerhalb der max-Funktion zurückzugeben. Ich bin derzeit immer:

ParseError: bad input on line 12 

Welche ist diese Zeile:

list.pop() 

nicht sicher, wie dies zu korrigieren. Vielen Dank.

+0

Es gibt tatsächlich eine eingebaute <'max()'] (https: //docs.python.org/3/library/functions.html # max) Funktion in Python. Sie könnten einfach folgendes tun: 'print (max (list))' - Sie müssen keine 'max()' Funktion definieren. – csinchok

+1

Bitte nennen Sie nicht Ihre Liste 'list' (es ist der Name des eingebauten Typs; während Python Sie nicht daran hindern würde, den Namen für etwas anderes zu verwenden, kann dies viel Verwirrung stiften). – NPE

+0

@csinchok wir können die Funktion max() für diese Zuweisung nicht verwenden. – Sean

Antwort

2

my_list.sort() sortiert die Liste selbst. Wenn Sie in answer Ihre sortierte Liste speichern möchten, sollten Sie verwenden:

answer = sorted(my_list) 

Sie auch eine Liste Verständnis Ihre erste Liste verwenden können wie folgt zu erzeugen:

>>> random 
>>> 
>>> my_list = [random.randint(0, 1000) for i in range(100)] 
>>> answer = sorted(my_list) 
>>> answer.pop() 
996 # This should be different each time 

Jetzt können Sie Ihre Funktion sein :

def max(my_list): 
    # sort list from least to greatest 
    answer = sorted(my_list) 
    # get last item in list (max value) 
    max = answer.pop() 

    return max 

Wenn Sie immer noch die gleiche Liste verwenden möchten, können Sie tun:

my_list.sort() 
max = my_list.pop() 

Beachten Sie: Ich ziehe es vor, die Liste my_list aufzurufen, weil list ein Python-Schlüsselwort ist.

+0

Also dann, um die sortierte Liste zu speichern, und um das letzte Element dieser sortierten Liste in Antwort zu speichern, würde ich antwort = sortierte (Liste) pop (Liste)? Versuchen, dass immer noch mir der Parse-Fehler. – Sean

+0

Wie merkwürdig ist es, dass wenn ich meinen Code lief habe ich '996' auch? Kann das ein Zufall sein? –

+1

Nur den Code viele Male ausführen :) – ettanany

3

1) Ihre Einbuchtung war aus

2) Sie 2 Python builtins in 4 Zeilen Code zu überschreiben verwaltet (max() und list()))

3) my_list.sort() keine Liste zurück. Es arbeitet an Ort und Stelle sortiert die Liste an Ort und Stelle. Im Gegensatz dazu gibt sorted(my_list) eine Liste zurück, so dass Sie entweder my_list.sort() oder my_list = sorted(my_list) tun können.

4) Ihre return war einfach falsch.

Sehen Sie den Code unten:

a_list = [] 
for i in range(100): 
    a_list.append(random.randint(0, 1000)) 

def my_max(my_list): 
    return sorted(my_list)[-1] # here, the list we passed gets sorted and its last item is retrieved (item with index -1) 

print(my_max(a_list)) 

Weitere interessante Antworten (Hut vor @ Rob), die ein bisschen Übermut verfügen:

def my_max(my_list): 
    return min(l, key:lambda i: 1/i) 

oder

def my_max(my_list): 
    return min(l, key:lambda i: -i) 
2

ich in der Regel Versuchen Sie zu vermeiden, Namen zu verwenden, die eine vordefinierte Funktion/eingebaute Namen haben, dies hilft, Probleme ziemlich oft zu vermeiden n. So sollte es funktionieren.

import random 

my_list = [] 
for i in range(100): 
    my_list.append(random.randint(0,1000))   

def my_max(my_list): 
    #sort list from least to greatest 
    my_list.sort() 
    #get last item in list (max value) 
    my_max = my_list.pop() 

    return my_max 

print my_max(my_list) 
Verwandte Themen