2016-04-12 14 views
0

Dies ist mein Codewie in einer Liste Python

k = [] 
    dot = input('length:') 
    a, b = input('Enter:') 
    for i in range(0,dot): 
     k.append('.') 

    for i in range(a, b+1): 
     k[i].append('x') 

    print k 

, wenn ich versuche zu laufen diese die Ausgabe aussehen wird,

length:9 
Enter:3, 4 
Traceback (most recent call last): 
    File "light_switch.py", line 8, in <module> 
    k[i].append('x') 
AttributeError: 'str' object has no attribute 'append' 

i einfügen wollen eine ‚x‘ löschen und anfügen an der Stelle von '.' also wie mache ich es.

+1

Ihr Fehler enthält 'k [i] .append ('x')', aber Ihr bereitgestellter Code nicht. Was ist dein tatsächlicher Code? – ShadowRanger

+0

Ich habe meinen tatsächlichen Code – pkarthicbz

Antwort

1

Wenn Sie die '.' im zweiten Bereich mit 'x' ersetzen wollen, gerade tun:

for i in range(a, b+1): 
    k[i] = 'x' 

Der Fehler, da ist, wenn Sie Index k[i] Sie die str bekommen Sie dort setzen, nur k ist ein list , aber die Werte sind str. str, unveränderlich sein, fehlt eine append Methode (und da Sie sagen, dass Sie ersetzen möchten, nicht verketten, würden Sie nicht eine append-ähnliche Operation sowieso wollen). Wenn Sie append-ähnliches Verhalten zu jedem möchten, ändern Sie k[i].append('x') zu k[i] += 'x' (das logisch eine neue verkettete str konstruiert und zurückweist, anstatt an Ort und Stelle zu mutieren), oder eine ganze Reihe von x s dem hinzuzufügen Ende der list, würden Sie einfach k.append('x') tun.

Hinweis: Wenn oder b+1 > dot, wird dies eine IndexError; Ersteres ist nicht fixierbar, letzteres könnte kludig gehandhabt werden, indem man einfach den ersten for Loop über range(max(dot, b+1)) statt range(dot) laufen lässt.

+0

Vielen Dank, das funktioniert :) – pkarthicbz

0

Um den Punkt mit x ersetzen Sie diesen Code ausprobieren können: ''

k = [] 
dot = input('length:') 
a, b = input('Enter:') 
for i in range(0,dot): 
    k.append('.') 

for i in range(a, b+1): 
    k[i] = 'x' 

print k 

Sie bereits eine haben an der Position, an der Sie versuchen, x hinzuzufügen, müssen Sie nur x statt "." zuweisen. Der Ort, auf den Sie mit einem [j] zugreifen möchten, ist .apend ('x') ist keine Liste und Sie versuchen, an x ​​anzuhängen. Es gibt also einen Fehler.

Verwandte Themen