2016-12-01 5 views
1

Напишите функцию Python, которая примет список из 100 случайных чисел от 0 до 1000 и вернет максимальное значение. (Примечание: есть встроенная функция по имени Макс, но вид, что вы не можете использовать его.)Создать список из 100 случайных целых чисел, возвращаемое максимальное значение

Вот что я пробовал:

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)) 

Как вы можете видеть, что я запутался о том, как правильно использовать методы сортировки и поп, чтобы вернуть максимальное значение в пределах функции max. В настоящее время я получаю:

ParseError: bad input on line 12 

Что эта линия:

list.pop() 

Не знаю, как это исправить. Благодарю.

+0

На самом деле существует встроенный ['max()'] (https: //docs.python.org/3/library/functions.html # max) в python. Вы можете просто сделать это: 'print (max (list))' - вам не нужно определять функцию 'max()'. – csinchok

+1

Пожалуйста, не называйте свой список 'list' (это имя встроенного типа, в то время как Python не помешает вам использовать имя для чего-то другого, это может вызвать много путаницы). – NPE

+0

@csinchok мы не можем использовать функцию max() для этого назначения. – Sean

ответ

2

my_list.sort() сортирует сам список. Если вы хотите сохранить свой отсортированный список в answer, вы должны использовать:

answer = sorted(my_list) 

Вы также можете использовать список понимание, чтобы сгенерировать первый список следующим образом:

>>> 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 

Теперь ваша функция может быть :

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 

Если вы хотите использовать один и тот же список, что вы можете сделать:

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

Отметьте, что: Я предпочитаю перечислить список my_list, потому что list является ключевым словом python.

+0

Итак, чтобы сохранить отсортированный список и сохранить последний элемент этого отсортированного списка в ответ, я бы ответил answer = sorted (list) pop (list)? Попытка, которая все еще дала мне ошибку синтаксического анализа. – Sean

+0

Как странно, когда я запускал свой код, я тоже получил «996»? Может быть, это совпадение? –

+1

Просто запустите код много раз :) – ettanany

3

1) Ваш отступы был выключен

2) Вам удалось перезаписать 2 Python встроенных команд в 4-х строк кода (max() и list()))

3) my_list.sort() не возвращает список. Он работает на месте, сортируя список на месте. Наоборот, sorted(my_list) действительно возвращает список, чтобы вы могли либо сделать my_list.sort(), либо my_list = sorted(my_list).

4) Ваш return был неправ.

Смотрите код ниже:

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)) 

Другие интересные ответы (шляпы прочь @Rob), которые показывают немного дерзость:

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

или

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

Я обычно старайтесь избегать использования имен, у которых есть предопределенная функция/встроенные имена, это помогает избежать проблем довольно часто п. Как это должно работать.

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^