Python 被简单计算的结果弄糊涂了
我不知道为什么下面的代码不起作用。我在Python3.5.2中运行它,问题似乎出现在代码的计算部分。它不返回任何错误,但给出的值不应该是5个输入的平均值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
#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
不是一个好的设计。虽然这可能可行,但也可以解释他/她的代码有什么问题谢谢!将来我会的。在这个线程中,它已经完成了。