Написание функции, которая вычисляет среднее значение 5 параметров из пользовательского ввода - PullRequest
0 голосов
/ 04 октября 2019

Мне нужно построить код, который даст среднюю сумму из 5 пользовательских параметров ввода. Я должен добавить все 5 параметров, а затем разделить сложение на 5. Я также должен убедиться, что функция использует команду возврата, чтобы вернуть среднее значение в качестве значения для функции. Поскольку я новичок, я не могу использовать расширенный код. Застрял в течение нескольких дней.

Я попытался преобразовать строку в int

Я попытался преобразовать список в строку в int

Я попытался сделать несколько переменных.

from statistics import mean

a = input("Enter 1st number:")
b = input("Enter 2nd number:")
c = input("Enter 3rd number:")
d = input("Enter 4th number:")
e = input("Enter 5th number:")
inputs = ['a', 'b', 'c', 'd', 'e']
input1 = int(inputs)
mean(inputs)


import math

a = input("Enter 1st number:")
b = input("Enter 2nd number:")
c = input("Enter 3rd number:")
d = input("Enter 4th number:")
e = input("Enter 5th number:")
inputs = ['a', 'b', 'c', 'd', 'e']
avg_mean = "5"
totals = int(inputs) / avg_mean

Я рассчитываю получить все 5 пользовательских чисел и разделить их на 5, чтобы получить среднюю сумму.

Ответы [ 3 ]

1 голос
/ 05 октября 2019

Питоническая реализация

  • Создание input непосредственно в списке и повторение с range
    • Нет необходимости создавать отдельный объект для каждого ввода
    • Нет необходимости затем загружать эти 5 объектов в другой объект
  • Преобразование input в int немедленно с int(input())
  • statistics.mean работает со всем списком
  • [x for x in range(5)] - это понимание списка
  • f'Input {x} values' - это f-String
  • Функция принимает параметр для количества входов. По умолчанию это 5, но оно не используется, если при вызове функции передается другой номер.
from statistics import mean

def mean_of_inputs(number_of_inputs: int=5) -> float:
    return mean([int(input(f'Please input {x + 1} of {number_of_inputs} numbers: ')) for x in range(number_of_inputs)])

# Use the function
mean_of_inputs(6)

Please input 1 of 6 numbers:  10
Please input 2 of 6 numbers:  20
Please input 3 of 6 numbers:  30
Please input 4 of 6 numbers:  40
Please input 5 of 6 numbers:  50
Please input 6 of 6 numbers:  60
35

Альтернатива 1:

  • Нетlist comprehension
  • Нет импортированных модулей
  • Сохраняет все входы в numbers и использует встроенную функцию sum
def mean_of_inputs(number_of_inputs: int=5) -> float:

    numbers = list()
    for x in range(number_of_inputs):
        numbers.append(int(input(f'Please input {x + 1} of {number_of_inputs} numbers: ')))

    return sum(numbers) / number_of_inputs

Вызовфункция:

mean_of_inputs()

Please input 1 of 5 numbers:  2
Please input 2 of 5 numbers:  4
Please input 3 of 5 numbers:  6
Please input 4 of 5 numbers:  8
Please input 5 of 5 numbers:  10
6.0

Альтернатива 2:

  • Не сохраняйте входы, просто добавьте их к промежуточному итогу
def mean_of_inputs(number_of_inputs: int=5) -> float:

    sum_of_inputs = 0
    for x in range(number_of_inputs):
        sum_of_inputs += int(input(f'Please input {x + 1} of {number_of_inputs} numbers: '))

    return sum_of_inputs / number_of_inputs
1 голос
/ 04 октября 2019

У вас есть ряд проблем, я укажу несколько для вас:

from statistics import mean

a = input("Enter 1st number:")
b = input("Enter 2nd number:")
c = input("Enter 3rd number:")
d = input("Enter 4th number:")
e = input("Enter 5th number:")

До этого момента у вас все в порядке, вы могли бы лучше хранить эти входные данные и использовать цикл вместо вставки копий5 раз, но это все равно даст вам то, что вы хотите

inputs = ['a', 'b', 'c', 'd', 'e']

Приведенная выше строка не делает то, что я думаю, вы хотите. Если вы хотите поместить свои 5 значений в список, вам нужно использовать переменные a,b,c,d,e вместо символов 'a','b','c','d','e'

inputs = [a, b, c, d, e]

Далее, int() не работает со списками в целомвам нужно передать 1 строку за раз. Вот простой способ сделать это:

for i in range(5): 
    inputs[i] = int(inputs[i])

Тогда среднее будет работать так, как вы хотите, с целым числом inputs list

mean(inputs)

Наконец, вы упомянули, что хотите превратить это вФункция, когда все работает, превратить ее в функцию со значением return довольно просто. Я оставлю это до вашего исследования

0 голосов
/ 04 октября 2019
from statistics import mean

a = input("Enter 1st number:")
b = input("Enter 2nd number:")
c = input("Enter 3rd number:")
d = input("Enter 4th number:")
e = input("Enter 5th number:")

m = mean(map(int, [a,b,c,d,e]))
...