2017-06-16 18 views
-1

Ich arbeite eine a-Liste Update-Programm, aber wenn ich diesen Code ausführen, bekomme ich can only concatenate list (not "str") to list Fehler. Hier ist mein Code:kann nur Liste verketten (nicht "str") zu listen - type error

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) 

Jede Hilfe wird geschätzt, auch wenn es nur geringfügig ist. Bei Abstimmungen bitte erläutern, warum ich in Zukunft Fragen verbessern kann.

Antwort

0

Der Wert ScoreA wird einem Listenspleiß zugewiesen. Dann versuchen Sie, "Score" zur Liste hinzuzufügen, aber Score ist eine Zeichenfolge. Daher müssen Sie durch den Index in ScoreA das Element für den Zugriff auf und fügen es zu einem int gecastet zum Spiel:

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 
0

Das Problem ist, dass Y[0:1] eine Liste ist:

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

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

es, dass Sie scheint versuchen, Score zu dem ersten Element in Y hinzuzufügen, dh Y[0]. Also würde ich dies tun:

In [97]: Score = 5 

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

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

Es gibt ein anderes Problem mit dem Code ist, nämlich dass input einen String zurückgibt, nicht ein int/Schwimmer, die Sie scheinen zu wollen. Daher würde ich Ihnen empfehlen, Score = input('Enter test score: ') zu Score = float(input('Enter test score: '))

zu ändern
Verwandte Themen