2011-02-11 6 views
2

x (아래 코드에서)를 취하여 합계를 구한 다음 등급의 수로 나누는 방법을 알아낼 수 없습니다. 클래스에서 주어진 예제는 4 등급이었고, 숫자는 3,4,1, 그리고 2였습니다. 평균 등급은 2.5가되어야하지만, 제대로 할 수는 없습니다!파이썬에서 범위 함수의 모든 숫자의 합을 얻으려면 어떻게해야합니까?

number_of_ratings = eval(input("Enter the number of difficulty ratings as a positive integer: "))  # Get number of difficulty ratings 
for i in range(number_of_ratings):  # For each diffuculty rating 
    x = eval(input("Enter the difficulty rating as a positive integer: "))  # Get next difficulty rating 
average = x/number_of_ratings 
print("The average diffuculty rating is: ", average) 
+1

이 문제에 대한 수학을 사용할 수 있습니다. 'n * (n + 1)/2 = 합계 (범위 (n + 1))'. 이것은 n의 큰 값에 유용 할 수 있습니다. – razpeitia

+0

@raz : 평균을 계산할 때 어디에서이 공식이 필요합니까? – Philipp

+0

@Philipp : 합계와'(n + 1)/2 = 평균 (범위 (n + 1)) '으로 항목 수로 나눕니다. – razpeitia

답변

3

귀하의 코드는 아무것도 추가하지 않습니다, 그냥 각 반복에 x을 덮어 씁니다. 변수에 무언가를 추가하려면 += 연산자를 사용하면됩니다. 또한, eval를 사용하지 않는 :

number_of_ratings = int(input("Enter the number of difficulty ratings as a positive integer: ")) 
x = 0 
for i in range(number_of_ratings): 
    x += int(input("Enter the difficulty rating as a positive integer: ")) 
average = x/number_of_ratings 
print("The average diffuculty rating is: ", average) 
+0

정말 고마워요! 그것은 나의 첫 번째 프로그래밍 경험이었습니다. 큰 도움이되었습니다. – Bobby

+0

이것은 또한 완벽하게 유효하고 좀 더 간결합니다 :'x = sum (int (input) ('난수 등급을 양의 정수로 입력하십시오')) in range_ (number_of_ratings) –

1
try: 
    inp = raw_input 
except NameError: 
    inp = input 

_sum = 0.0 
_num = 0 
while True: 
    val = float(inp("Enter difficulty rating (-1 to exit): ")) 
    if val==-1.0: 
     break 
    else: 
     _sum += val 
     _num += 1 

if _num: 
    print "The average is {0:0.3f}".format(_sum/_num) 
else: 
    print "No values, no average possible!" 
관련 문제