Python Hausaufgabe / Dezimalzahlen untereinander ausgeben

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
slythelly
User
Beiträge: 1
Registriert: Dienstag 22. Oktober 2013, 12:00

Also, in meiner FGI Vorlesung haben wir die Aufgabe bekommen ein Python Programm zu schreiben das die eingegebene Zahl in Dezimaldarstellung ausgibt und dabei alle Ziffern untereinander schreibt.
Also 465 als
4
6
5

Nun habe ich leider nicht ein mal einen Ansatz wie ich das zu schreiben habe. Ich kann ja nicht wie in Java einen String mit einer Zahl verbinden und damit bin ich dann auch schon mit meinem Latein am Ende.

Ich programmiere erst seit zwei Wochen, also bitte habt Gnade. :oops:
Soweit kenne ich lediglich While-Schleifen. :/

Ich wäre für ein wenig Hilfe sehr dankbar.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ansatz: Zahl in einen String umwandeln und diesen dann iterativ ausgeben :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@slythelly: Wenn Du nur ``while``-Schleifen kennst und mit den Grunddatentypen nicht umgehen kannst, dann solltest Du erst einmal ein Tutorial durcharbeiten, mindestens bis die nötigen Sprachkonstrukte und Datentypen dran waren. In der Python-Dokumentation ist ein Tutorial und für absolute Programmieranfänger wird Learn Python The Hard Way oft empfohlen. (Nicht vom Titel irritieren lassen.)
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ob es dafür wohl ein Python-Modulo gibt...? :o
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ein ganzes Modulo für so eine kleine Aufgabe? Ich bevorzuge dann doch eher die stringente Lösung.
Das Leben ist wie ein Tennisball.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

snafu hat geschrieben:Ob es dafür wohl ein Python-Modulo gibt...? :o
Division oder Modulo, das ist hier die Frage.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Ich plädiere für eine funktional rekursive Lösung mit Division und Modulo. ;)

Spaß beiseite.

Du benötigst eine Funktion um eine Zahl in eine Zeichenkette umzuwandeln (str). Eine for-Schleife und eine print-Funktion.

Grüße ... bwbg
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

/me hat geschrieben:
snafu hat geschrieben:Ob es dafür wohl ein Python-Modulo gibt...? :o
Division oder Modulo, das ist hier die Frage.
Da kann man aber geteilter Meinung sein!
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

cofi hat geschrieben:Da kann man aber geteilter Meinung sein!
Solang man die Reste nicht unter den Tisch fallen läßt, sollte es egal sein.

@bwbg: ich würde eher sagen, es ist eine Frage des format.
BlackJack

Also für die gesamte Aufgabe brauche ich kein `str()`. Der Benutzer gibt ja schon eine Zeichenkette ein. Die kann man gleich weiterverarbeiten. Eine explizite Schleife braucht es auch nicht um '\n' zwischen die einzelnen Buchstaben zu bekommen.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Möchtest du uns damit sagen, dass eine Lösung gerade mal 26 Zeichen, inklusive ``raw_input``, benötigt? Bzw. 24 unter Python 3.x.
Das Leben ist wie ein Tennisball.
BlackJack

@EyDu: Ich denke ja. Es sind 27, aber da ist ein Leerzeichen drin welches man weglassen könnte. :-)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

In Python 3.x ohne Leerzeichen komme ich auch auf 23 :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@BlackJack: ich komm auf 27 ohne Leerzeichen, oder war das gemeint?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Sirius3 hat geschrieben:@BlackJack: ich komm auf 27 ohne Leerzeichen, oder war das gemeint?
27 mit Leerzeichen nach dem print, 26 ohne.
Hyperion hat geschrieben:In Python 3.x ohne Leerzeichen komme ich auch auf 23 :-)
Stimmt. :-)
Das Leben ist wie ein Tennisball.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hyperion hat geschrieben:In Python 3.x ohne Leerzeichen komme ich auch auf 23 :-)
Ich auch. Aufgrund eines mysteriösen Fehlers kann ich die Lösung allerdings nur in superharter Geheimsprache posten... :(

Code: Alles auswählen

cevag(*vachg(),frc='\n')
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Hyperion hat geschrieben:In Python 3.x ohne Leerzeichen komme ich auch auf 23 :-)
Hmmm, dann mach ich was falsch. Ich habe bisher nur 2 unterschiedliche Varianten mit 26 Zeichen.

Edit: Ach so, die Variante mit dem entpackten vachg.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

EyDu hat geschrieben:Möchtest du uns damit sagen, dass eine Lösung gerade mal 26 Zeichen, inklusive ``raw_input``, benötigt? Bzw. 24 unter Python 3.x.
Unter 2.x komme ich jetzt auf 22 Zeichen runter.

Code: Alles auswählen

znc(cevag,enj_vachg())
In Python 3 geht das aufgrund des geänderten Verhaltens von znc nicht mehr.

Edit: Was mir komplett entfallen war ist, dass ich in allen Python 2 Skripten immer ein from __future__ import print_function im Header stehen habe. Fairerweise müsste man das eigentlich hinzuzählen, wodurch die Lösung dann nicht mehr so kurz ist. :(
Zuletzt geändert von /me am Mittwoch 23. Oktober 2013, 09:05, insgesamt 1-mal geändert.
BlackJack

@/me: Das ist in Python 2 ein Syntaxfehler. Und wenn Du den `__future__`-Import machst, damit es das nicht mehr ist, dann sind es deutlich mehr Zeichen.
Antworten