Python 用第三个变量求平均值
我刚开始学习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.
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。看看我在上面的回答中给你的例子……我认为它很好地解释了这一点:)非常感谢你,山姆,这很有帮助