Seite 1 von 1

Der kürzeste Weg für fünfzig Sterne

Verfasst: Donnerstag 19. März 2009, 15:39
von mzh

Code: Alles auswählen

print("".join(["*"]*50))
?

Verfasst: Donnerstag 19. März 2009, 15:42
von Rebecca

Code: Alles auswählen

print "*" * 50

Verfasst: Donnerstag 19. März 2009, 15:48
von mzh
Rebecca hat geschrieben:

Code: Alles auswählen

print "*" * 50
ist ein String eine Liste?

Verfasst: Donnerstag 19. März 2009, 15:50
von DasIch
Nein, dann müsste man ja einen Character Datentyp haben wie z.B. Haskell.

Verfasst: Donnerstag 19. März 2009, 15:57
von mzh
Es findet also auch keine Konvertierung des Strings "*" in eine Liste statt, wenn man

Code: Alles auswählen

"*" * 50
schreibt?
Dh. Strings und Listen können so "vervielfältigt" werden?

Verfasst: Donnerstag 19. März 2009, 16:05
von snafu
mzh hat geschrieben:Strings und Listen können so "vervielfältigt" werden?
Siehst du doch. ;)

Verfasst: Donnerstag 19. März 2009, 16:06
von CM
Das Schöne an Python ist ja: Man kann es einfach und schnell probieren. Einfach den Interpreter starten und eingeben ...

Zu den Fragen: Nein, der String wird nicht konvertiert. Ja, man kann Strings so "vervielfältigen". Und nein, Listen kann man so nicht vervielfältigen, wohl aber deren Inhalt.

Gruß,
Christian

Verfasst: Donnerstag 19. März 2009, 16:06
von Nocta
Wozu gibt's denn type() um das selbst zu überprüfen?
Übrigens: Ja, man kann Strings so vervielfältigen.
ist ein String eine Liste?
Nein, du könntest aber mal ein Tutorial durcharbeiten ;)
Strings sind in gewisser Weise schon einer Liste recht ähnlich, man kann auch einzelne Elemente des Strings wie die einer Liste ansprechen.

Verfasst: Donnerstag 19. März 2009, 16:15
von mzh
Wieso ergibt sich bei

Code: Alles auswählen

>>>print(["*"*5].append("d"))
None
?

Und keine Sorge, natürlich ich arbeite an einem Tutorial, ich bin aber trotzdem froh, wenn ich zwischendurch mal eine Unklarheit beseitigen und gleichzeitig ein bisschen die deutschsprachige Python-Community kennenlernen kann.

Verfasst: Donnerstag 19. März 2009, 16:17
von cofi
Weil .append keinen Rückgabewert hat -> `None'

Verfasst: Donnerstag 19. März 2009, 16:24
von Nocta
Allgemein könnte man sagen, dass print() immer den Rückgabewert einer Funktion ausgibt oder, wenn man ein Objekt ausgeben will (also keine Methode oder Eigenschaft/Variable des Objekts), wird immer der Rückgabewert der __str__-Methode des Objekts ausgegeben.
Wenn __str__ nicht existiert wird die Klasse des Objekts und die Speicheradresse (oder was ist das?) ausgegeben.

Verfasst: Donnerstag 19. März 2009, 16:39
von BlackJack
`__str__()` existiert immer. Wenn es nicht überschrieben wurde, ruft das `__repr__()` auf, und das wiederrum ist so implementiert, das Typname und ID des Objekts ausgegeben werden.

Verfasst: Donnerstag 19. März 2009, 16:47
von Nocta
Ah okay, ich habe sowas wie 0x02A1EF08 für eine Speicheradresse oder so gehalten.
Aber das ist einfach nur die ID als Hexadezimalwert.
Edit: Öhm die id ist doch eigentlich die Speicheradresse? Also hatte ich im Prinzip doch recht :p

Verfasst: Donnerstag 19. März 2009, 17:09
von DasIch
Nocta hat geschrieben:Edit: Öhm die id ist doch eigentlich die Speicheradresse? Also hatte ich im Prinzip doch recht :p
Jein. Das ist Implementationsabhängig, CPython macht dass zwar aber bei Jython gibt es soweit ich weiß einfach einen Counter für die `id`s

Verfasst: Donnerstag 19. März 2009, 17:36
von Leonidas
Selbst wenn es eine Adresse wäre, würde das sowieso nicht viel bringen denn eigentlich kann man aus Python heraus nicht auf beliebige Adressen zugreifen. Macht ja auch nicht wirklich Sinn.