Я предлагаю использовать встроенную функцию sum
в выражении генератора, а не добавлять ваши случайные значения вручную. Это немного более продвинутый, чем то, что вы используете, но это одна из вещей, что Python действительно хорошо:
import random
minimum=int(input("Enter minimal value: "))
maximum=int(input("Enter maximum value: "))
howMany = int(input("How many numbers do you want to generate?"))
total = sum(random.randint(minimum, maximum) for _ in range(howMany)) # do the sum
avg = total/howMany # compute the average
# print the output
print("Average of {} random numbers between {} and {} is {:.2}".format(howMany, minimum,
maximum, avg))
Я делаю несколько других вещей, по-другому тоже. Для начала я использую имя total
для суммы случайных чисел, чтобы не затенять встроенную функцию sum
. Допускается изменение существующего имени, но обычно это плохая идея (это может привести к ошибкам). Поскольку я использую функцию sum
, было бы очень сложно использовать sum
в качестве имени переменной.
В выражении генератора внутри sum
вызова, я также использую randint
, а не randrange
, потому что она включает в себя максимальное значение (randrange
исключает максимум, как range
делает). Я думаю, что это лучше соответствует описанию «между minimum
и maximum
», что предполагает (по крайней мере, мне), что конечные точки должны обрабатываться симметрично. Если вы используете свои случайные числа для какой-либо другой цели, вы должны быть осторожны, чтобы функция, которую вы вызываете, соответствовала вашей пользе, или вы можете получить трудно найти ошибки.
Я также использую форматирование строк для получения результата, а не для передачи нескольких значений до print
. Это позволяет гораздо более гибко форматировать, если вы этого хотите. Я использую эту гибкость, чтобы ограничить среднее значение до двух знаков после запятой, а не по умолчанию Python (что часто является всей точностью, доступной для числа с плавающей запятой, около 16 знаков после запятой).
'num + = 1' должно быть' n + = 1' – BartoszKP
Гораздо проще использовать 'for _ in range (howMany):', то вы не можете забыть увеличивать – jonrsharpe