2013-03-01 1 views
0

Я использую питон версию 3.Сравнивая цифры в списке на целое число, а затем возвращаются цифры

Для домашней работы, я пытаюсь разрешить пять цифр ввода от пользователя, а затем найти среднее значение этих цифр , Я понял, что часть (потратил час на изучение функции карты, очень круто).

Вторая часть проблемы состоит в том, чтобы сравнить каждый отдельный элемент списка со средним значением, а затем вернуть те, которые больше среднего.

Я думаю, что «если есть» внизу будет сравнивать числа в списке со средним, но я не знаю, как вытащить это значение, чтобы распечатать его. Вы, ребята, катаетесь за всю помощь.

#Creating a list 
my_numbers = [input("Enter a number: ") for i in range(5)] 

#Finding sum 
Total = sum(map(int, my_numbers)) 

#Finding the average 
Average = Total/5 

print ("The average is: ") 
print (Average) 
print ("The numbers greater than the average are: ") 

if any in my_numbers > Average: 
+0

Просто обратите внимание, что '[input (« Введите число: ») для i в диапазоне (5)]' можно изменить для преобразования в число на входе (сохранение с использованием карты позже) - например: '[int (input («Введите число:»)) для i в диапазоне (5)] ' –

ответ

0
#Creating a list 
my_numbers = [] 
r = range(5) 
for i in r: 
    try: 
     my_numbers.append(int(input("Enter a number: "))) 
    except: 
     print('You must enter an integer') 
     r.append(i) 

#Finding sum 
Total = sum(my_numbers) 

#Finding the average 
Average = Total/5 
print ("The average is: ") 
print (Average) 
print ("The numbers greater than the average are: ") 
print ([x for x in my_numbers if x>Average]) 

Я уверен, что вы, наконец, преуспели в своем коде, даже если никто не ответил.

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

Обратите внимание на способ, которым я добавить i к r каждый раз, когда возникает ошибка для того, чтобы восполнить элемент r, что было израсходовано.

+0

Итак, код нецелого кода ... Я не вижу, что пытается попытаться сделать. Он просто пытается добавить вход в список, не так ли? Является ли небольшое добавление (int, чтобы он не принимал его, если он не является целым числом? – RKSiegel

+0

Большое спасибо за вашу помощь! – RKSiegel

+0

Как только инструкция '' int (input ("Enter a number:")) ' 'будет выполнено без ошибок, будет очень мало шансов, что добавление его результата приведет к ошибке. Таким образом,' 'try'' должен быть уверен, что преобразование ввода в целое число выполняется без ошибок. – eyquem

0

Что вам нужно сделать, это итерацию по списку и распечатать цифры выше среднего:

for i in my_numbers: 
    if int(i) > Average: 
     print(i) 

Чтобы сделать вещи проще, вы также можете иметь my_numbers список фактически начало из в виде списка целых чисел:

my_numbers = [int(input("Enter a number: ")) for i in range(5)] 

Теперь мы можем избавиться от функции map (не волнуйтесь, т он час не пропадает, вы найдете его очень полезным и в других ситуациях). Вы также можете перейти к вычислению среднего значения без вычисления общей суммы, так как вам больше не понадобится сумма.

Average = sum(my_numbers)/5 

Это означает, что вы можете изменить цикл for, так что вы можете заменить int(i) с i.

Вы также можете создать список со списком, а затем распечатать значения в этом списке.

aboveAverage = [i for i in my_numbers if i > Average] 
for i in aboveAverage: 
    print i 
+0

Благодарим за помощь. Я продолжаю видеть людей, использующих «i» в этих циклах. Я предположил, что это просто удобное письмо, но это похоже на нечто большее. Есть ли у него специальная функция? – RKSiegel

+0

Кроме того, я пытался установить список как int с самого начала, но продолжал получать сообщение об ошибке. Я помещал свои закрывающие скобки после 5, а не после ввода. Очень важно – RKSiegel

+0

@RKSiegel no, 'i' - просто соглашение - вы можете заменить его на что угодно. Вы можете получить доступ к нему в цикле, просто указав его. – Volatility

0

К сожалению, «если есть» не работает. Взгляните на документы для любой функции, чтобы понять, что она делает. Он не делает то, что вы хотите, даже если ваш синтаксис был правильным. То, что вы хотите, это только цифры, большие, чем среднее. Вы можете использовать понимание списка: [номер для числа в my_numbers, если число> Среднее]. Или вы можете использовать цикл.