Seite 2 von 3

Verfasst: Dienstag 2. Dezember 2008, 15:42
von derdon
siehe [wiki=Lange_Zeilen_im_Sourcecode#LangeStrings]diesen wiki-eintrag[/wiki]

Verfasst: Dienstag 2. Dezember 2008, 15:54
von gkuhl
Danke, funktioniert :D

Verfasst: Dienstag 2. Dezember 2008, 16:50
von pheder
Ich glaub ich muss auch mal mitmischen, wenns auch nur ne ganz unwichtige Sache ist:

Code: Alles auswählen

i = 0
print ''
for race in STEREOTYPES.keys():
    i += 1
    print str(i) + ': ' + race
kannst du auch ersetzen durch:

Code: Alles auswählen

i = 0
print ''
for race in STEREOTYPES:
    i += 1
    print str(i) + ': ' + race
Eine Iteration über ein Dictionary liefert immer die Keys.

Was mich trotzdem noch stört ist dieses "i=0" und "i+=1", ich komm vom Gedanken nicht weg, dass man das vermeiden könnte... Aber das wird wohl auch nur eine Wunschvorstellung sein :cry:

Verfasst: Dienstag 2. Dezember 2008, 17:12
von cofi
Klar geht das besser ;)

Code: Alles auswählen

for i, race in enumerate(STEREOTYPES):
    print i+1 " : " + race
wenn mans denn bei der Nummerierung lassen will, statt bei 0 anzufangen.

Verfasst: Dienstag 2. Dezember 2008, 17:15
von yipyip
Das ist keine Wunschvorstellung, sondern nennt sich
'enumerate()'

Code: Alles auswählen

In [49]: for i, k in enumerate(['hexe', 'Gnom', 'Beamter']):
   ....:     print '%s: %s' % (i, k)
   ....:     
   ....:     
0: hexe
1: Gnom
2: Beamter

:wink:
yipyip

Verfasst: Dienstag 2. Dezember 2008, 17:15
von yipyip
ups, zuuu spät...
:cry:
yipyip

Verfasst: Dienstag 2. Dezember 2008, 17:30
von cofi
yipyip hat geschrieben:ups, zuuu spät...
:cry:
yipyip
Wobei das String-Formating viel schöner ist :)

Verfasst: Dienstag 2. Dezember 2008, 17:41
von yipyip
Wobei das String-Formating viel schöner ist Smile
...kommt immer drauf an...
Hatte mich nur spontan für '%s...' % (... ) entschieden,
weil ich's manchmal übersichtlicher finde.

:wink:
yipyip

Verfasst: Dienstag 2. Dezember 2008, 18:05
von Leonidas
Das String-Formatting ist eigentlich immer schöner, weil es nicht-Strings von selbst nach bestimmten Regeln in Strings konvertiert und in die Strings einsetzt.

Verfasst: Dienstag 2. Dezember 2008, 20:01
von yipyip
ACK!
:wink:
yipyip

Verfasst: Dienstag 2. Dezember 2008, 20:02
von Hyperion
lunar hat geschrieben: Eher nicht. Ein Objekt der Logik-Schicht hat keine Ahnung vom Darstellungsmedium und kann sich deswegen auch nicht "drucken". Dafür ist dann die entsprechende Ansicht in der Präsentationsschicht verantwortlich.
Da es hier um die Stringrepräsentation geht, halte ich das durchaus für sinnvoll. Natürlich nicht im Sinne von grafischer Darstellung aller Art! Da hast Du natürlich Recht. Aber eine __str__() Methode zu haben ist schon sinnvoll imho. Ich hätte das sofort klarer ausdrücken müssen.

Verfasst: Dienstag 2. Dezember 2008, 20:09
von lunar
Naja, das kommt auch darauf an. Ein Objekt, dass sich sinnvoll in eine Zeichenkette überführen lässt, sollte auf jeden Fall eine __str__ Methode haben. Das kanonische Beispiel wäre eine Zahl ...

Bei einem komplexeren Objekt, dass keine sinnvolle String-Darstellung hat, ist __repr__ besser, um eine Repräsentation der internen Daten zu erzeugen.

Verfasst: Mittwoch 3. Dezember 2008, 14:17
von sma
Mir ist nicht aufgefallen, dass jemand schon das Attribut-Array angesprochen hat. Das würde ich so nicht realisieren. Es ist nicht [0] sondern Geist, nicht [5] sondern Sinne. Daher würde ich hier ein eigenes Objekt vorschlagen:

Code: Alles auswählen

class Attributes:
  def __init__(self, geist, körper, geschick, sozial, wille, sinne):
    self.geist, self.körper, self.geschick, self.sozial, self.wille, self.sinne = ...

held.attributes = Attributes(geist=4, körper=6, ...)
if held.attributes.wille < 5:
  print "Du bist zu willensschwach, um dem Zauber zu widerstehen..."
Falls dich das ö wundert: Wenn's jetzt mit Python losgehen soll, würde ich gleich bei Python 3.0 starten und da kann man alle Buchstaben, die der Unicode-Zeichensatz hergibt, für Namen benutzen. Andernfalls müsste man "koerper" benutzen, was weniger schoen ist.

Stefan

Verfasst: Mittwoch 3. Dezember 2008, 14:34
von cofi
Guter Einwurf, wobei man zum Erzeugen der Attributs-Objekte aber hinzufügen sollte - da es ja rassenspezifische Startattribute gibt, dass man das entweder in einen Wrapper packt, der die Rasse auswertet, oder das über die Attributsklasse löst (evtl weniger schön).

Das mit den Umlauten stimmt schon, die Frage ist aber, ob man nicht generell den Quelltext in Englisch schreiben sollte, da es zum Programmieren eh benötigt wird und da es den einfachsten Schriftsatz hat - auf einer englischen Keymap ein `ü' zu schreiben ist eine sehr lustige Geschichte, wenn man keinen Editor hat, der Digraphen unterstützt ;).

Verfasst: Mittwoch 3. Dezember 2008, 15:39
von Leonidas
cofi hat geschrieben:Das mit den Umlauten stimmt schon, die Frage ist aber, ob man nicht generell den Quelltext in Englisch schreiben sollte, da es zum Programmieren eh benötigt wird und da es den einfachsten Schriftsatz hat - auf einer englischen Keymap ein `ü' zu schreiben ist eine sehr lustige Geschichte, wenn man keinen Editor hat, der Digraphen unterstützt ;).
Ja, ich finde auch dass Umlaute in Bezeichnern alles andere als gewünscht ist. Es mag sein, dass das für sehr beschränkte Sachen nützlich ist. Aber ich habe mir angewöhnt alles in Englsich zu machen: Bezeichner im Code, Kommentare, Dokumentation.