Codeacademy

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
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

INSTRUCTIONS
Print out the current date in the pretty form of mm/dd/yyyy. It's totally okay if it comes out as m/d/yyyy.

from datetime import datetime
now = datetime.now()
print(now)
print(now.year)
print(now.month)
print(now.day)
print(now.month , + "/" , now.day, + "/" , now.year)

Ich finde den Fehler einfach nicht
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dann zeige doch mal den Traceback.

Du willst den String _vor_ dem `print` Aufruf zusammensetzen und dein Fehler ist, dass du beides vermischst. Aber viel wichtiger als das konkrete Problem ist es Tracebacks lesen zu lernen (auch wenn der in diesem Fall eher haarig sein wird).

Und wenn du dann schon `datetime.datetime` benutzt: Die Objekte haben eine Methode zum formatieren von Daten.
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

das war alles vorgegeben. Ich soll nur die Print machen
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

from datetime import datetime
now = datetime.now()
print(now)
print(now.year)
print(now.month)
print(now.day)
print(now.month, + now.day, + now.year)

so weit komme ich schon immer, dann kommt die fehlermeldung


Oops, try again! Your printed date doesn't seem to be in the proper format: mm/dd/yyyy.
BlackJack

@mettalqueen: Da ist nichts vorgegeben was verbieten würde die `datetime.datetime`-Methoden zu verwenden. Dass dort ``+`` *vorgeschlagen* wird, bedeutet ja nicht, dass man nicht auch etwas anderes nehmen kann, zum Beispiel ``%`` oder `format()` um Werte in eine Zeichenkette zu formatieren. Der Aufgabentext verrät ausserdem das ein ``+`` alleine nicht reichen würde, man muss wenn man ``+`` verwendet, mit den Werten noch zusätzlich etwas machen.

Lass das doch mal lokal bei Dir laufen und schau Dir an was da heraus kommt. Und erkläre mal was die ``+`` bei Dir Deiner Meinung nach was und mit welchen Werten machen.

Edit: Und wenn Du die letzte Zeile richtig hinbekommst, dann ist das Ergebnis immer noch falsch, denn Du gibst ja nicht nur wie gefordert das Datum einmal im gewünschten Format aus.

Edit2: Ich sehe gerade, dass nicht nur die Meldung ausgegeben wird, dass das Ergebnis falsch ist, sondern auch das Ergebnis selbst. Da siehst Du ja ziemlich deutlich in wie weit sich das Unterscheidet. Wenn man mal die ganzen unnötigen ``print``-Anweisungen aus Deinem letzten Quelltext raus nimmt, dann wird dort das hier ausgegeben:

Code: Alles auswählen

(6, 14, 2013)
None
Offensichtlich wird dort Python 2 benutzt, also solltest Du als erstes mal aufhören `print()` als Funktion zu schreiben, das ist es nämlich in Python 2 nicht.
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

naja ich habe gelernt das + zwei listen und strings zusammenfügen, aneinander setzen. Aus der Fehlermeldung habe ich entnommen wenn ich irgendwie / dazufüge, dass das eine in strg ausgegeben wird und das / int ist, oder andersrum, verwechsel das noch
BlackJack

@mettalqueen: ``+`` setzt zwei Zeichenketten zusammen wenn links und rechts davon eine Zeichenkette steht. Das tut es aber in keinem Deiner Fälle, weil dort links davon jeweils *nichts* steht. Damit ist das ein unärer-Operator und der ist auf Zeichenketten nicht definiert. Deswegen bekommst Du im ersten Beispiel einen Fehler:

Code: Alles auswählen

In [1]: + 'a'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/home/bj/<ipython-input-1-058706a80171> in <module>()
----> 1 + 'a'

TypeError: bad operand type for unary +: 'str'
Und im zweiten Beispiel wird der Operator auf ganze Zahlen angewandt. Da ist er definiert. Bewirkt aber erwartungsgemäss nichts:

Code: Alles auswählen

In [2]: + 42
Out[2]: 42
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

verstehe nicht was du mir damit sagen möchtest
lunar

@mettalqueen Dann lese die Instruktionen auf der Seite, ganz langsam und sehr genau. Wenn Dir Dein Fehler dann immer noch nicht klar wird, arbeite das Python-Tutorial durch, so lange, bis Du es verstanden hast.
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

habe mir das jetzt gefühlte tausendmal durchgelesen komme trotzdem nicht auf die lösung
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Die Instruktionen gehen doch der Reihe nach alles ab:

1. Hintereinander Ausgeben mit `print` funktioniert nicht, also
2. versuchen wir den string selbst zusammenzubauen mit `+`, aber
3. `3 + "foo"` funktioniert nicht, weil die 3 kein String ist, darum muessen wir die `str` Funktion benutzen.

Hier mal eine Schablone wie es aussehen soll:

Code: Alles auswählen

x = str(...) + "/" + str(...) + "/" + str(...)
print x
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

wenn ich das aber so mache kommt folgende fehlermeldung

Traceback (most recent call last):
File "runner.py", line 125, in compilecode
File "python", line 4
print str(now.day) + "/" str(now.month) + "/" str(now.year))
^
SyntaxError: invalid syntax


denn das hatte ich auch schon probiert
BlackJack

@mettalqueen: Vielleicht solltest Du da mal 'ne Nacht drüber schlafen. Wenn man nicht mal mehr die Konzentration aufbringt richtig abzuschreiben, bekommt man schon gar nichts mehr selbst auf die Reihe. ;-)
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

from datetime import datetime
now = datetime.now()

x = str(now.day) + "/" str(now.month) + "/" str(now.year)
print (x)
mettalqueen
User
Beiträge: 44
Registriert: Dienstag 7. Mai 2013, 23:02
Wohnort: Greifswald

jetzt hat es geklappt
Antworten