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
Codeacademy
-
- User
- Beiträge: 44
- Registriert: Dienstag 7. Mai 2013, 23:02
- Wohnort: Greifswald
- 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.
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- User
- Beiträge: 44
- Registriert: Dienstag 7. Mai 2013, 23:02
- Wohnort: Greifswald
das war alles vorgegeben. Ich soll nur die Print machen
-
- User
- Beiträge: 44
- Registriert: Dienstag 7. Mai 2013, 23:02
- Wohnort: Greifswald
-
- 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.
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.
@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:
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.
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
-
- 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
@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:
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 [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'
Code: Alles auswählen
In [2]: + 42
Out[2]: 42
-
- User
- Beiträge: 44
- Registriert: Dienstag 7. Mai 2013, 23:02
- Wohnort: Greifswald
verstehe nicht was du mir damit sagen möchtest
@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.
-
- 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
- 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:
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
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- 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
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
@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.
-
- 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)
now = datetime.now()
x = str(now.day) + "/" str(now.month) + "/" str(now.year)
print (x)
-
- User
- Beiträge: 44
- Registriert: Dienstag 7. Mai 2013, 23:02
- Wohnort: Greifswald
jetzt hat es geklappt