2016-04-14 2 views
0

Этот код должен рассчитать среднее значение для извлечения целого числа от 0 до 100. Любые предложения были бы замечательными.Печать среднего значения в python, используя список

  • Подскажите пользователю о количестве очков, которые они ожидают получить для участия в конце класса. Это число не должно быть , скорректированное программой (общая занятость 302).
  • Рассчитать окончательный вариант, основанный на среднем значении теста до .
  • Подскажите пользователю о различных оценках. -1 = нет больше баллов, 0 - нуль для этого задания. Продолжайте цикл для оценки до тех пор, пока пользователь не войдет в -1.

Вот мой код, я определенно не очень хорошо разбираюсь в списках. Наверное, понятно.

list1 = [] 
g=1 
totalnum = 0 
total=0 
tot = int(input("Total Points? :")) 
list1.append(tot) 
eng = int(input("How many points do you expect to get in engangement, out of 302?: ")) 
list1.append(eng) 

while g !=0: 
    num = int(input("Please enter a grade")) 
    if num == -1: 
     break 
    totalnum+=1 
    total= total+num 
    list1.append(num) 

average= tot/eng+num 
counter=0 
while counter<totalnum: 
    print(list1[counter]) 
    counter+=1 

print("your average is",average) 
+0

линия 'average = tot/eng + num' выглядит подозрительно. – Tommy

ответ

1

Если вы можете использовать встроенные модули вы можете просто использовать sum(your_list)/len(your_list) для среднего.

Если len(your_list) равно нулю, вы получите ZeroDivisionError, потому что вы только что сломали математику.

+1

не забудьте проверить 'len (your_list)> 0'! – Tommy

+0

Pesky 'ZeroDivisionError' исключений: [ – Pythonista

0

Это не для меня ясно, что это то, что вы пытаетесь достичь, но если вы просто хотите, среднее всех значений в списке, вы можете просто сделать:

average = sum(list)/len(list) 

Это вернется целое число, если вы не хотите, огибая вы могли бы сделать:

average = sum(list)/float(len(list)) 

Как в стороне, у вас есть это:

counter=0 
while counter<totalnum: 
    print(list1[counter]) 
    counter+=1 

Что можно было бы сделать проще, как:

for e in list1: 
    print e 

Python будет делать разметку для вас. :)

+1

не забудьте проверить len (list)> 0! – Tommy

+0

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

+0

это еще не дало мне среднего. То, что программа должна делать, в основном вычисляет класс класса студентов, при этом пользователь вводит возможные суммы сумм, а затем пользователь добавляет в данный пункт как оценку. поэтому, если кто-то получил тест 9/10, пользователь будет вводить номер 9. –

0
list1 = [] 
g=1 
totalnum = 0 
total=0 

tot = int(input("Total Points? :")) 
eng = int(input("How many points do you expect to get in engangement, out of 302?: ")) 
list1.append(eng) 

while g !=0: 
    num = int(input("Please enter a grade")) 
    if num == -1: 
     break 
    else: 
     list1.append(num) 
     totalnum+=1 
     total= (num+eng)/tot 
print(len(list1)) 
average = (sum(list1)/tot)*100 
counter=0 
for e in list1: 
    print (e) 

print("your average is",average) 

Это больше того, что я искал. Благодаря @Tommy, @SQLnoob и @Slayer для подсказок, которые я внедрил в код.

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