Turtle write Frage

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.
Antworten
Sinnentlehrt
User
Beiträge: 67
Registriert: Mittwoch 30. Januar 2013, 22:32

Hallo Leute,

kapiere es gerade einfach nicht. Möchte einen Wochentag aus einem Dictionary abbilden.
Es geht dabei um diese Zeile:

Code: Alles auswählen

anzeige_d.write('Wochentag:', tage_l[w_tag],font=('courier', 20, 'bold'))
Das Wort 'Wochentag:' kommt durch, der Rest dahinter nicht.
In der IDLE kommt Testweise der richtige Wochentag raus.

Hier mal das ganze Konstrukt:

Code: Alles auswählen

def datum():
        anzeige_d = Turtle()
        tage_l = {0:'Montag' , 1:'Dienstag', 2:'Mittwoch', 3:'Donnerstag',
                  4:'Freitag', 5:'Samstag', 6:'Sonntag'}
        monate_1 = {0:'Jan.', 1:'Feb.', 2:'Marz', 3:'Apr.', 4:'Mai',
                    5:'Juni', 6:'July', 7:'Aug.', 8:'Sep.', 9:'Okt.',
                    10:'Nov.', 11:'Dez.'}
        jetzt_d = datetime.now()
        w_tag = jetzt_d.weekday()
        tag = jetzt_d.day
        monat = jetzt_d.month
        jahr = jetzt_d.year
        anzeige_d.pu()
        anzeige_d.write('Wochentag:', tage_l[w_tag],font=('courier', 20, 'bold'))
        print(tage_l[w_tag]) #IDLE Test, klappt schon mal.
Schon mal Danke für die Hilfe im Voraus.

Gruss,

Gutschy
Du weißt das du vergessen hast einzukaufen, wenn du dich morgens mit Geschirrspülmittel duscht.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Da hilft dir ein Blick in die Hilfe:
write(self, arg, move=False, align='left', font=('Arial', 8, 'normal')) method of turtle.Turtle instance
Write text at the current turtle position.

Arguments:
arg -- info, which is to be written to the TurtleScreen
move (optional) -- True/False
align (optional) -- one of the strings "left", "center" or right"
font (optional) -- a triple (fontname, fontsize, fonttype)

Write text - the string representation of arg - at the current
turtle position according to align ("left", "center" or right")
and with the given font.
If move is True, the pen is moved to the bottom-right corner
of the text. By default, move is False.
Die wichtigen Stellen habe ich für dich mal fett markiert. write erwartet genau ein Argument mit Text, du übergibst aber zwei. Du must den String also vorher zusammensetzen. Suche zu dem Thema mal nach "String Formatting".

Dann fällt noch die unnötige Verwendung der Wörterbücher auf. Wenn du einen Bereich von 0 bis n durchnummerierst, dann möchtest du eine Liste oder ein Tupel verwenden. Auch haben die Definitionen der Tage und Monate nichts in der Funktion zu suchen, daraus solltest du Konstanten machen und diese aus der Funktion herausziehen.

Jetzt stellt sich für mich noch die frage, was diese "_l"s und "_d"s am Ende der Namen bedeuten sollen. Ich vermute mal, dass das l irreführenderweise für "Liste" steht, obwohl es sich um ein Wörterbuch handelt. Sollte Typerweiterung solltest du am besten gleich sein lassen. Und "w_tag" finde ich jetzt nicht besser zu lesen als "wochentag". Denk daran, dass du deinen Code vielleicht auch noch in drei Monaten verstehen musst. Mit solchen kryptischen Namen wird dir das nicht mehr ohne Probleme geleingen.
Das Leben ist wie ein Tennisball.
Sinnentlehrt
User
Beiträge: 67
Registriert: Mittwoch 30. Januar 2013, 22:32

EyDu :wink: ,

vielen Dank für deine Anteilname. Habe es dann dank dir hinbekommen. Und deine konstruktiven Kritik habe ich
mir größtenteils auch sofort angenommen. Und natürlich ist das Quatsch ein Wörterbuch für eine Aufzählung zu nehmen. Das mit den Konstanten baue ich auch gleich ein.

Nochmal vielen Dank für deine schnelle und sehr gute Hilfe.

Gruss,

Gutschy
Du weißt das du vergessen hast einzukaufen, wenn du dich morgens mit Geschirrspülmittel duscht.
Antworten