对简单计算的结果感到困惑

时间:2016-09-12 00:58:04

标签: python python-3.x average

我不确定为什么以下代码无效。我在python 3.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)

4 个答案:

答案 0 :(得分:1)

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

averageWin = (int(year1) + int(year2) + int(year3) + int(year4) + int(year5)) / 5

你之前做的是连接字符串:

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

答案 1 :(得分:0)

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

>>> a = '3'
>>> b = '5'
>>> c = '4'
>>> x = a+b+c
>>> int(x)
354
>>> x
'354'
>>> int(a)+int(b)+int(c)
12

此外,不是命名单个变量,而是使用list

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

答案 2 :(得分:0)

默认情况下,input()返回一个字符串。您正在添加字符串,然后将结果转换为int.

假设我们将输入1, 2, 3, 4, 5作为变量。您的代码'1'+ '2' + '3' + '4' + '5'代替1 + 2 + 3 + 4 + 5。您的结果是'12345'而不是15。因此,您将12345除以5而不是15分。要解决此问题,请在int()次调用周围添加input(),将这些答案转换为数字。

答案 3 :(得分:0)

试试这个。

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

缩短并且有效。