2016-11-27 3 views
-1

Я застрял - вам нужна помощь, чтобы начать работу - просто ударившись о кирпичную стену.Создание функции в python для средних значений?

Таким образом, предполагается, что должны быть два списка и одна таблица, определяемая следующим образом.

• Актеры, список строк, которые являются именами актеров. Для каждого i такого, что 0 ≤ i ≤ len (Actors) - 1, мы будем называть Actor [i] как i-й актер.

• Фильмы, список струн, которые являются названиями фильмов. Для каждого i такого, что 0 ≤ i ≤ len (Films) - 1, мы будем рассматривать Film [i] как i-й фильм.

• Оценки, таблицы, строки которых соответствуют актерам и колоннам, соответствуют фильмам. Оценки [i] [j] - целое число, определяемое следующим образом.

- Если баллы [i] [j] = -1, это означает, что i-й актер не является звездой для j-го фильма.

- Если результаты [i] [j] ≥ 0, то это оценка i-го актера для j-го фильма. Вы можете предположить, что баллы находятся в диапазоне 0-100, нет необходимости проверять достоверность данных.

Мне разрешено определять вышеуказанные структуры как зафиксированные в моей программе, нет необходимости просить пользователя ввести их.

Итак, как написать функцию, аргументы которой представляют собой таблицу A целых чисел и положительное целое число i. Функция должна возвращать среднее значение неотрицательных значений A [i] (строка i из A).

Благодаря Джемма

+0

Вы, возможно, потребуется [цикл] (https://docs.python.org/3 /tutorial/controlflow.html#for-statements); так вы [определяете функцию] (https://docs.python.org/3/tutorial/controlflow.html#defining-functions); [sum()] (https://docs.python.org/3/library/functions.html#sum) поможет вам. Ваша таблица может быть списком списков - вот как [списки] (работа) (https://docs.python.org/3/tutorial/introduction.html#lists). – wwii

+0

Попробуйте что-нибудь. Запишите словами, как вы подумайте, что проблема может быть решена - обратитесь к этому и переработайте по мере необходимости. Разбейте проблему на более мелкие проблемы и попытайтесь решить эту проблему в любое время. Вернитесь сюда с проблемами, с которыми вы сталкиваетесь при решении меньших проблем. Читайте http: // stackoverflow.com/help/how-to-ask и http://stackoverflow.com/help/mcve. – wwii

ответ

1
import numpy as np 

actors = ['Brad Pitt', 'George Clooney', 'Matt Damon', 'Rowan Atkinson'] 

films = ['Oceans 11', 'Oceans 12', 'Bean'] 

actors_dimension = (len(actors)) 

longest_actor_length = len(max(actors, key=len)) 
longest_film_length = len(max(films, key=len)) 
longest_overall_length = max(longest_actor_length, longest_film_length) 
padding = longest_overall_length 

scores_width = len(films) + 1 
scores_height = len(actors) + 1 

scores = [[' '.rjust(padding) for x in range(scores_width)] for y in range(scores_height)] 

#Setting films 
for i, film in enumerate(films): 
    scores[0][i+1] = film.rjust(padding) 

#Setting actors 
for i, actor in enumerate(actors): 
    scores[i+1][0] = actor.rjust(padding) 

#Filling data 
#Brad Pitt 
scores[1][1] = '1'.rjust(padding) 
scores[1][2] = '1'.rjust(padding) 
scores[1][3] = '-1'.rjust(padding) 

#George Clooney 
scores[2][1] = '1'.rjust(padding) 
scores[2][2] = '1'.rjust(padding) 
scores[2][3] = '-1'.rjust(padding) 

'Matt Damon' 
scores[3][1] = '1'.rjust(padding) 
scores[3][2] = '1'.rjust(padding) 
scores[3][3] = '-1'.rjust(padding) 

'Rowan Atkinson' 
scores[4][1] = '-1'.rjust(padding) 
scores[4][2] = '-1'.rjust(padding) 
scores[4][3] = '1'.rjust(padding) 

def average_of_row(row): 
    if((row > actors_dimension) or (row <= 0)): 
    print('That row is not in the table or has no actor') 
    else: 
    actor = (scores[:][row]).pop(0).strip() 
    actors_scores = [int(x) for x in ((scores[:][row]))] 
    print("%s's average score is: %f" % (actor, float((sum(actors_scores)/len(actors_scores))))) 

print(np.matrix(scores)) 

average_of_row(1) #Brad Pitt 
average_of_row(4) #Rowan Atkinson 

Выход:

[['    ' '  Oceans 11' '  Oceans 12' '   Bean'] 
['  Brad Pitt' '    1' '    1' '   -1'] 
['George Clooney' '    1' '    1' '   -1'] 
[' Matt Damon' '    1' '    1' '   -1'] 
['Rowan Atkinson' '   -1' '   -1' '    1']] 
Brad Pitt's average score is: 0.333333 
Rowan Atkinson's average score is: -0.333333 

Попробуйте here!

+0

Спасибо, что это действительно полезно - у меня есть мышление и кодирование. Большое спасибо – NoobyD

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