Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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_Python 3.x_Average - Fatal编程技术网

Python 被简单计算的结果弄糊涂了

Python 被简单计算的结果弄糊涂了,python,python-3.x,average,Python,Python 3.x,Average,我不知道为什么下面的代码不起作用。我在Python3.5.2中运行它,问题似乎出现在代码的计算部分。它不返回任何错误,但给出的值不应该是5个输入的平均值 #inputs year1 = input("Enter wins for year 1: ") year2 = input("Enter wins for year 2: ") year3 = input("Enter wins for year 3: ") year4 = input("Enter wins for year 4: ") y

我不知道为什么下面的代码不起作用。我在Python3.5.2中运行它,问题似乎出现在代码的计算部分。它不返回任何错误,但给出的值不应该是5个输入的平均值

#inputs
year1 = input("Enter wins for year 1: ")
year2 = input("Enter wins for year 2: ")
year3 = input("Enter wins for year 3: ")
year4 = input("Enter wins for year 4: ")
year5 = input("Enter wins for year 5: ")

#calculation
averageWin = int(year1 + year2 + year3 + year4 + year5) / 5
#output
print ("Average wins are", averageWin)

您需要将输入值单独转换为整数

averageWin = (int(year1) + int(year2) + int(year3) + int(year4) + int(year5)) / 5
您之前所做的是连接字符串:

int('100' + '100') => int('100100') => 100100

您正在连接字符串,然后将其转换为整数。在添加字符串之前,必须将每个字符串转换为整数

>>> a = '3'
>>> b = '5'
>>> c = '4'
>>> x = a+b+c
>>> int(x)
354
>>> x
'354'
>>> int(a)+int(b)+int(c)
12
此外,不要命名单个变量,而是使用
列表

>>> result = [int(input('Enter wins for year %d: ' % i)) for i in range(1,6)]
Enter wins for year 1: 3
Enter wins for year 2: 4
Enter wins for year 3: 3
Enter wins for year 4: 5
Enter wins for year 5: 5
>>> sum(result)/len(result)
4.0
默认情况下,
input()
返回一个字符串。您正在添加字符串,然后将结果转换为
int.
假设我们将输入
1,2,3,4,5
作为变量。您的代码执行
'1'+'2'+'3'+'4'+'5'
而不是
1+2+3+4+5
。您的结果是
'12345'
,而不是
15
。所以你把12345除以5,而不是15。要解决此问题,请在每个
input()
调用周围放置
int()
,将这些答案转换为数字

试试这个

    year = 0
    for i in range(5):
        ann = "{:,.0f}".format(i+1)
        year=year+input("Enter wins for year "+ann+": ")
    print year/5.

较短且有效。

您将所有输入添加为字符串,因此
'1'+'1'='11'
您需要将它们分别强制转换为
int
,然后将它们添加到一起。为什么不使用名为
year
的列表并将其加载到循环中?拥有大量变量,如
year1
year2
不是一个好的设计。虽然这可能可行,但也可以解释他/她的代码有什么问题谢谢!将来我会的。在这个线程中,它已经完成了。