Seite 1 von 1

tupel einen string zuweisen ->Fehler?

Verfasst: Samstag 12. Mai 2007, 20:24
von iceman21
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

Verfasst: Samstag 12. Mai 2007, 20:30
von fred.reichbier
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

Verfasst: Sonntag 13. Mai 2007, 10:54
von Sr4l
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
>>> 

Re: tupel einen string zuweisen ->Fehler?

Verfasst: Montag 14. Mai 2007, 08:43
von jens
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)