Frage zu Listen

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.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Hallo,

Code: Alles auswählen

Takte = eingabe.split('+')
Damit erzeuge ich eine Liste, weiß aber nie wie viele Elemente sie dann hat (kommt auf die Eingabe des Benutzers an). Bietet Python eine methode mit der Man das vorletzte und das vorvorletzte poppen kann. Mit dem letzten Element geht das ja auch.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Bitte schön:

Code: Alles auswählen

>>> eingabe = 'eins+zwei+drei+vier'
>>> eingabe
'eins+zwei+drei+vier'
>>> takte = eingabe.split('+')
>>> takte
['eins', 'zwei', 'drei', 'vier']
>>> len(takte)
4
>>> takte[1:2]
['zwei']
>>> takte[1:3]
['zwei', 'drei']
>>> takte.pop(0)
'eins'
>>> takte
['zwei', 'drei', 'vier']
>>> takte.pop(-1)
'vier'
>>> takte
['zwei', 'drei']
>>>
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Also '-1' bezeichnet das vorletzte Listenelement? Kann man Listen so umwandeln, dass sie mit einer Print Anweisung ausgegeben werden können?
Zuletzt geändert von Imperator am Freitag 21. September 2007, 16:48, insgesamt 1-mal geändert.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Ups, mein Fehler. Nein, es bezeichnet das letzte (also das erste von hinten). Das vorletzte hat demnach den Index -2.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Imperator hat geschrieben:Kann man Listen so umwandeln, dass sie mit einer Print Anweisung ausgegeben werden können?
Ja, ``print listenobjekt`` geht sogar ohne Umwandlung.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Ich hab versucht den genauen Befehl im Interpreter herauszufinden, es aber nicht geschafft. Kannst du mir bitte sagen wie das genau geschriebem wird?
BlackJack

Die Anweisung heisst ``print`` (ohne die ``). Wenn Du die nicht kennst, solltest Du vielleicht nochmal ganz von vorne mit dem Python-lernen anfangen.

Code: Alles auswählen

In [52]: liste = [1, 2, 3]

In [53]: print liste
[1, 2, 3]
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Natürlich kenn ich die anweisung print, aber wenn ich schreibe print liste, dann gibt ds nen Error.
BlackJack

Du hast den Code in meinem letzten Beitrag gesehen? Da ist kein Fehler aufgetreten. Es geht also, und Du must irgend etwas falsch machen.

*Was* Du falsch machst kann man ohne *Quelltext* und die *Fehlermeldung* nicht sagen.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Wenn ich deinen Code genauso in ein Fenster kopiere (im Interpreter klappt es) kommt die Meldung 'invalid syntax'.
Sorry, das ich gestern nicht mehr drauf geantwortet hab, aber mir ist die Tastatur durchgedreht.
BlackJack

Was heisst "in ein Fenster kopieren"? Was für ein Fenster? Welche Anwendung? Was kopierst Du dort hin? Wie ist der volle Traceback?
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Fenster = File, new window
Ein ganz normales Editorfenster also.
Fehlermeldung (es lässt sich gar nicht erst starten): There is an error in your programm.
Invalid syntax
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Nun, der Output oben sieht nach IDLE (oder PyCrust oder sowas) aus.
Wenn du die Zeilen oben richtig kopierst (also eigentlich formatierst) und dann verwendest, dann geht's auch:

Code: Alles auswählen

liste = [1,2,3]
print listeliste
Geht ja bei mir auch. Wenn ich es allerdings "live" in IDLE mache, sieht mein Prompt auch so aus:

Code: Alles auswählen

IDLE 1.2.1      
>>> liste = [1,2,3]
>>> print liste
[1, 2, 3]
>>> 
Also mit den ">>>".

Das trifft dann natürlich auf den anderen Code weit oben auch zu!
Gruß!
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Code: Alles auswählen

in [52]: liste = [1, 2, 3]
in [53]: print liste
genau wie bei BlackJack. Anscheinend mag die IDLE das nicht
poker
User
Beiträge: 146
Registriert: Donnerstag 20. September 2007, 21:44

Imperator hat geschrieben:Anscheinend mag die IDLE das nicht
Du sollst auch ``print liste`` und nicht ``in [53]: print liste`` eingeben...
BlackJack

Nein, natürlich mag IDLE den prompt von ipython nicht. Was denkst Du denn was das bewirken sollte? Argh!
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Ups, ich jetzt ist es so

Code: Alles auswählen

 liste = [1, 2, 3]
 print liste
Und die Fehlermeldung 'unexpected intend'(?)
Ach ja, und da einige sagen ich soll listeliste eingeben, damit funktioniert es auch nicht. :(
poker
User
Beiträge: 146
Registriert: Donnerstag 20. September 2007, 21:44

Imperator hat geschrieben:Ups, ich jetzt ist es so

Code: Alles auswählen

 liste = [1, 2, 3]
 print liste
Und die Fehlermeldung 'unexpected intend'(?)
Ach ja, und da einige sagen ich soll listeliste eingeben, damit funktioniert es auch nicht. :(

Code: Alles auswählen

IDLE 1.2      
>>> #### nicht so:
>>>   l = [1,2,3]
  
  File "<pyshell#1>", line 1
    l = [1,2,3]
   ^
IndentationError: unexpected indent
>>> ##### sondern so:
>>> l = [1,2,3]
>>> ##### Du musst also richtig einrücken :)
>>> 
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Ich hab doch gar nichts eingerückt. Kannst du das bitte genauer ausdrücken.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Vielleicht beim copy & paste aus Versehen ein Leerzeichen am Anfang mitkopiert?
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Antworten