2017-01-04 2 views
0

und danke im Voraus. Ich arbeite an einem Programm, und währenddessen erlaube ich die Änderung einiger Verbindungen innerhalb des Programms selbst. Als solche habe ich den folgenden Code schrieb dies zu erleichtern:Erlaube String Variable zu setzen Wert

n = {'car': 'gate'} #this also exists for all the other directions 
directions = ['n', 's', 'e', 'w', 'ne', 'nw', 'sw', 'se', 'u', 'd'] 
roomto = input("\nROOM TO CHANGE CONNECTIONS FOR (A) # ").lower() 
toroom = input("\nROOM IT SHOULD LEAD TO (B) #").lower() 
toroomd = input("\nWHAT DIRECTION SHOULD LEAD FROM A TO B? # ").lower() 
toroomb = input("\nWHAT DIRECTION SHOULD LEAD FROM B TO A? # ").lower() 
if(toroomd in directions) and (toroomb in directions): 
    statusd = 'status' + toroomd 
    statusb = 'status' + toroomb 
    toroomd[roomto] = toroomd 
    toroomb[toroom] = roomto 
    print("Success!") 

aber es gibt mir die folgende Fehlermeldung (ignorieren Sie die Zeilennummer, das ist nur, wo es in den größeren Programm):

TrTraceback (most recent call last): 
File "python", line 1885, in <module> 
TypeError: 'str' object does not support item assignment 

Ich habe ein bisschen gelesen und habe versucht, den toroomd [roomto] = toroomd in eine Liste zu packen, aber das gibt mir nur einen neuen Fehler, weil ich nicht in der Nähe eines Strings und um einen Float oder Splice herum sein kann.

Irgendwelche Vorschläge, oder ist das einfach nicht möglich?

+1

'toroomd [roomto] = toroomd' sein: Sie in einem String Scheibe nicht schreiben kann (und Ihr Index ist nicht einmal eine ganze Zahl). Unklar, was du verlangst. –

+1

Mögliches Duplikat von [Ersetze Instanzen eines Zeichens in einer Zeichenkette] (http://stackoverflow.com/questions/12723751/replacing-instances-of-a-character-in-a-string) –

+0

Ich hätte wahrscheinlich hinzugefügt - - und wird jetzt - dass die Toroomd/Toroomb Verzeichnisse früher darstellen (zum Beispiel: n = {'Auto': 'Gate')) –

Antwort

1

Strings in Python sind unveränderlich.
Sie können es nicht ändern.
Nur neue erstellen.

toroomd[roomto] = toroomd
muss
toroomd = toroomd[:roomto] + toroomd + toroomd[roomto+1:]

Verwandte Themen