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.
iceman21
User
Beiträge: 41
Registriert: Sonntag 25. März 2007, 20:45
Kontaktdaten:

tupel einen string zuweisen ->Fehler?

Beitragvon iceman21 » Samstag 12. Mai 2007, 20:24

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

Beitragvon fred.reichbier » Samstag 12. Mai 2007, 20:30

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:

Beitragvon Sr4l » Sonntag 13. Mai 2007, 10:54

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Re: tupel einen string zuweisen ->Fehler?

Beitragvon jens » Montag 14. Mai 2007, 08:43

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)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: Yahoo [Bot]