Найти среднее с помощью третьей переменной - PullRequest
0 голосов
/ 19 апреля 2020

Я только начал изучать Python, поэтому я ошибаюсь.

Number_One, Number_Two, Number_Three = input("Enter Three Numbers").split()

Average_Number = int(Number_One + Number_Two + Number_Three) / 3

print(f"The average of all the numbers is {Average_Number}")

Я хочу напечатать среднее значение из трех чисел. Почему я получаю 41.0 и как я могу решить эту проблему?

Ответы [ 5 ]

1 голос
/ 19 апреля 2020

То, что вы добавляете, это '1' + '2' + '3', что дает '123', а int('123')/3 равно 41.0.

Вам необходимо преобразовать КАЖДЫЙ вход в целые числа перед их добавлением:

number1, number2, number3 = input('Enter Three Numbers').split()

average_number = (int(number1) + int(number2) + int(number3))/3
0 голосов
/ 19 апреля 2020

Поскольку ваш вопрос неясен, но вы можете попробовать следующий пример для вычисления среднего числа 3 в python 3

Number_One, Number_Two, Number_Three = map(int, input("Enter Three Numbers").rstrip().split())

Average_Number = (Number_One + Number_Two + Number_Three) / 3

print(Average_Number)
0 голосов
/ 19 апреля 2020

Это хорошая возможность узнать об отладке! Вы знаете, что это выражение 41.0:

int(Number_One + Number_Two + Number_Three) / 3

И вы знаете, что вы хотите получить 2.0 - так как вы получили 41?

Давайте разбить его вниз:

>>> int(Number_One + Number_Two + Number_Three)
123

О, это странно - почему сложение 1, 2 и 3 дает нам 123? Эти значения на самом деле 1, 2 и 3?

>>> Number_One, Number_Two, Number_Three
('1', '2', '3')

Ах - это не ЦИФРЫ 1, 2 и 3, это СТРОКИ! (Вы можете определить это по 'quotation marks'.) Когда вы добавляете строки, они объединяются вместе, например:

>>> 2 + 2
4
>>> '2' + '2'
'22'
>>> 'foo' + 'bar'
'foobar'

Таким образом, способ исправить это - преобразовать числа в int s до мы добавляем их:

number_one, number_two, number_three = input("Enter three numbers: ").split()
average_number = (int(number_one) + int(number_two) + int(number_three)) / 3
print(f"The average of all the numbers is {average_number}")

Более простой способ написать это - сделать их списком вместо трех переменных. Таким образом, вам не нужно иметь дело с таким количеством имен переменных и круглых скобок, и он также обрабатывает любое количество чисел вместо ровно трех!

numbers = [int(n) for n in input("Enter some numbers: ").split()]
average_number = sum(numbers) / len(numbers)
print(f"The average of all the numbers is {average_number}")

Или вы можете использовать statistics.mean, чтобы сделать это в одна строка:

>>> from statistics import mean
>>> print(
...     "The average of all the numbers is",
...     mean(int(n) for n in input("Enter some numbers: ").split())
... )
Enter some numbers: 1 2 3
The average of all the numbers is 2
0 голосов
/ 19 апреля 2020

У вас проблема в следующей строке:

Average_Number = int(Number_One + Number_Two + Number_Three) / 3

У вас есть три строки. Когда вы добавляете их, вы фактически объединяете их в одну строку. Например:

'1' + '2' + '3' = '123'

Затем вы преобразуете строку в int и делите на 3. Чтобы решить эту проблему, вам нужно преобразовать каждую строку в int, прежде чем их суммировать, и поместить их все внутрь скобка:

Average_Number = (int(Number_One) + int(Number_Two) + int(Number_Three)) / 3
0 голосов
/ 19 апреля 2020

В этой строке есть ошибка

Average_Number = int(Number_One + Number_Two + Number_Three) / 3

Сначала преобразуйте число в целое число, а затем выполните любую операцию. 2 не равно «2»

Например, 3 + 3 = 6 Но «3» + «3» = «33»

Надеюсь, вы получили точку

...