Seite 1 von 1

Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:18
von mettalqueen
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

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:26
von cofi
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.

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:27
von mettalqueen
das war alles vorgegeben. Ich soll nur die Print machen

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:27
von mettalqueen

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:32
von mettalqueen
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.

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:40
von 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.

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:43
von mettalqueen
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

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 08:53
von 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

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 17:27
von mettalqueen
verstehe nicht was du mir damit sagen möchtest

Re: Codeacademy

Verfasst: Freitag 14. Juni 2013, 17:30
von 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.

Re: Codeacademy

Verfasst: Samstag 15. Juni 2013, 22:32
von mettalqueen
habe mir das jetzt gefühlte tausendmal durchgelesen komme trotzdem nicht auf die lösung

Re: Codeacademy

Verfasst: Samstag 15. Juni 2013, 22:39
von cofi
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

Re: Codeacademy

Verfasst: Samstag 15. Juni 2013, 22:45
von mettalqueen
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

Re: Codeacademy

Verfasst: Samstag 15. Juni 2013, 22:58
von 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. ;-)

Re: Codeacademy

Verfasst: Samstag 15. Juni 2013, 23:04
von mettalqueen
from datetime import datetime
now = datetime.now()

x = str(now.day) + "/" str(now.month) + "/" str(now.year)
print (x)

Re: Codeacademy

Verfasst: Samstag 15. Juni 2013, 23:04
von mettalqueen
jetzt hat es geklappt