tupel einen string zuweisen ->Fehler?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
iceman21
User
Beiträge: 41
Registriert: Sonntag 25. März 2007, 20:45
Kontaktdaten:

Hallo ich habe ein kleines programm geschrieben dass genau auf mien problem eingeht. Ich habe einen tupel und möchte einem bestimmten wert in einen anderen Wert ändern.
wenn ich das programm starte kommt folgende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Programme\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in __main__.__dict__
  File "C:\xampp\htdocs\jens\Script1.py", line 4, in ?
    formulare[1]="Hallo"
TypeError: object does not support item assignment 
kann man tupels keine anderen Werte zuweisen ? Wenn nicht... wie könnte man das denn lösen ? Liste geht nciht da ich es später schreibe(printe) wie z.b. :

Code: Alles auswählen

 print '''<table><tr><td align="center"><b> %s</b></td>
         <td align="center"><b> %s</b></td>
         <td align="center"><b> %s</b></td>
         </tr>
         </table>''' %formulare
dies hat nur mit einem tupel funktioniert...
ich hoffe ihr wisst eine lösung
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Hallo,

Nein, Tupelelementen kann man keine anderen Werte zuweisen.
Du kannst allerdings so einen Tupel zu einer Sequenz(Liste) umformen:

Code: Alles auswählen

liste = list(tupel)
Und so eine Liste zu einem Tupel:

Code: Alles auswählen

tupel = tuple(liste)
Jedenfalls hat das bei mir gut geklappt :D

MfG,
Fred
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

tupel

Code: Alles auswählen

x = (123,456,789,"Hallo")
sind unveränderbar.

also wie fred schon gesagt hat musst du tupel umwandeln oder gleich als
liste anlegen

Code: Alles auswählen

>>> x =[123,456,789]
>>> print x
[123, 456, 789]
>>> x[0] = "Hallo"
>>> print x
['Hallo', 456, 789]
>>> 
listen können aber nicht auf folgende art erweitert werden:

Code: Alles auswählen

>>> x =[123,456,789]
>>> x[3] = 0
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: list assignment index out of range
>>> 
um listen etwas anzuhängen nutzt du x.append(WERT) oder x.instert(INDEX, WERT)

wenn du soetwas möchtest musst du dicts einsetzen:

Code: Alles auswählen

>>> x = {}
>>> x["Vorname"] = "Lars"
>>> x["Alias"] = "Sr4l"
>>> x
{'Alias': 'Sr4l', 'Vorname': 'Lars'}
>>> print x["Vorname"]
Lars
>>> 
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

iceman21 hat geschrieben:

Code: Alles auswählen

 print '''<table><tr><td align="center"><b> %s</b></td>
         <td align="center"><b> %s</b></td>
         <td align="center"><b> %s</b></td>
         </tr>
         </table>''' %formulare
Do etwas würde ich es auch nicht mit tuple machen... Dazu kann man besser ein dict nehmen. Wie das geht habe ich im Wiki aufgeschrieben: [wiki]String Formatter[/wiki]
(Die Seite ist neu, wie immer, bitte verbessern)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten