Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用第三个变量求平均值_Python_Input_Average - Fatal编程技术网

Python 用第三个变量求平均值

Python 用第三个变量求平均值,python,input,average,Python,Input,Average,我刚开始学习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.

我刚开始学习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以及我如何解决这个问题?

你在那里添加的是
'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

这行有错误

Average_Number = int(Number_One + Number_Two + Number_Three) / 3
首先将数字转换为整数,然后执行任何操作。 2不等于“2”

比如说 3+3=6 但是 “3”+“3”=“33”


我希望你明白了这一点,你在以下几行中遇到了问题:

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

这是学习调试的好机会!您知道这个表达式是41.0:

int(一号+二号+三号)/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,它们是字符串!(您可以通过
“引号”
)添加字符串时,它们会连接在一起,如下所示:

>>> 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}")
或者您可以使用
统计。平均值
在一行中完成:

>>> 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

由于您的问题不清楚,但您可以尝试以下示例来计算Python3中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)

请以文本形式提供。请不要发布代码、数据或回溯的图像。复制并粘贴为文本,然后将其格式化为代码(选择它并键入
ctrl-k
)。。。请你解释一下,如果我使用的是平均数=int(数一+数二+数三)/3,为什么它会打印41.0(如果我使用1,2,3作为输入)?@Vipul Tiwari我回答的第一句话是:你在这里添加的是
'1'+'2'+'3'
,它产生
'123'
,和
int('123'))/3
41.0
。感谢您的帮助!你能解释一下,如果我使用的是Average_Number=int(Number_One+Number_Two+Number_Three)/3,为什么它要打印41.0(如果我使用1,2,3作为输入)?在python中,它总是接受什么样的输入值作为字符串。例如,“2”和“s”之间没有区别。两者都是字符串但你可以,你可以,内置的评估方法来解决这个问题如果我取平均数=int(数+数+数+数)/3,输入是1,2,3,那么它给我41.0,你能解释一下吗?@Vipultivari,因为你要做的是将三个字符串连接成一个,然后将一个字符串转换为int。首先需要将每个数字转换为int。看看我在上面的回答中给你的例子……我认为它很好地解释了这一点:)非常感谢你,山姆,这很有帮助