Seite 1 von 1

Turtle write Frage

Verfasst: Samstag 9. November 2013, 23:52
von Sinnentlehrt
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

Re: Turtle write Frage

Verfasst: Sonntag 10. November 2013, 00:08
von EyDu
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.

Re: Turtle write Frage

Verfasst: Sonntag 10. November 2013, 00:31
von Sinnentlehrt
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