只能将列表(不是“str”)连接到列表 - 类型错误

时间:2017-06-16 17:22:50

标签: python python-3.x

我正在进行列表更新程序但是当我运行此代码时出现can only concatenate list (not "str") to list错误。这是我的代码:

A = 1
B = 2
C = 3
D = 4
E = 5

Acount = 1
Bcount = 1
Ccount = 1
Dcount = 1
Ecount = 1

ScoreA = 20

X = [A, B, C, D, E]
Y = [20, 40, 60, 80, 100]
Ave = input('Enter hours spent revising (1-5): ')
if Ave == '1':
    Score = input('Enter test score: ')
    Acount += 1
    ScoreA = Y[0:1] + Score #Error occurs here
    ScoreA = ScoreA / Acount
    Y.insert(0, ScoreA)

任何帮助都表示赞赏,即使它只是次要的。如果下来投票请解释为什么我可以在将来改进问题。

2 个答案:

答案 0 :(得分:0)

值ScoreA被分配了一个列表拼接。然后,您尝试添加"分数"到列表,但分数是一个字符串。因此,您需要在ScoreA中按索引访问元素并将其添加到Score,并将其转换为int:

Y = [20, 40, 60, 80, 100]
Score = input('Enter test score: ')
Acount += 1
ScoreA = Y[0:1][0] + int(Score) #Here, accessing the first value of Y, which is the only value

答案 1 :(得分:0)

问题是Y[0:1]是一个列表:

In [95]: Y = [1,2,3,4,5]

In [96]: Y[0:1]
Out[96]: [1]

您似乎正在尝试将Score添加到Y中的第一个元素,即Y[0]。所以我会这样做:

In [97]: Score = 5

In [98]: Y[0] += Score

In [99]: Y[0]
Out[99]: 6

您的代码还有另一个问题,即input返回一个字符串,而不是您想要的int / float。因此,我建议您将Score = input('Enter test score: ')更改为Score = float(input('Enter test score: '))