Suche Idee zum Erlernen von Python...

Du hast eine Idee für ein Projekt?
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Freitag 16. November 2007, 16:44

Hallo,

das passt jetzt vllt. nicht ganz in diesen Bereich, aber wenigstens der Name "Idee" hat gepasst.

Also, ich bin auf der Suche nach einem Projekt, mit dem ich meine Python Kenntnisse erweitern kann und das gleichzeitig nicht zu schwer ist... Bisher habe ich das Buch "Python Ge-Packt" von Michael Weigend durchgearbeitet und verfüge somit über Kenntnisse dieses Buches.

Was sollte das Projekt sein:

- rein Softwarebasierend (keine grafischen messauswertungen etc.)
- nicht zuuu schwer
- in gewisser Weise nützlich


Ich habe schon länger überlegt, nur leider fällt mir nichts Sinnvolles ein...

Jemand eine Idee oder wenigstens eine Richtung?!

Vielen Dank!
MfG
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Freitag 16. November 2007, 18:50

Es gibt jedes Jahr den Bundeswettbewerb für Informatik. Du könntest dich daran setzen, die Aufgaben zu lösen. Vielleicht fällt dir ja dabei ein Programm ein, dass man gebrauchen kann.

Oder du baust ein Programm, dass aussagenlogische Ausdrücke einliest, auswertet, vereinfacht und die passende minimierte Schaltung dazu ausspuckt. (Ich würd da sogar als Beta-Tester herhalten)

Grüße
Panke
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 16. November 2007, 19:07

SchneiderWeisse hat geschrieben:Jemand eine Idee oder wenigstens eine Richtung?!
Ich fasse mich kurz, da ich schon im Wiki was dazu geschrieben habe: [wiki]Projektideen[/wiki].
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Freitag 16. November 2007, 19:22

Ich rate zu einem Quiz!
Aber lass den Bundeswettbewerb Informatik erstmal. Dessen Aufgaben sind teils sauschwer! Wenn du ein bisschen GUI probieren willst würde ich dir zu einem ähnlichen projekt raten wie ich es mal mit Delphi realisiert hab:
http://sdpf.sd.funpic.de/SDPF%20-%20UNS ... RAMME.html
Es ist das zweite von oben. Am besten du probierst es einfach aus, das bringt hier mehr als tausend erklärungen. Was mir dann auch noch einfallen würde, wäre ein Zahlensuchspiel.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 16. November 2007, 19:35

Spaces in URLs? Davon würde ich absehen :?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Freitag 16. November 2007, 19:39

aussagenlogische Ausdrücke einliest, auswertet, vereinfacht und die passende minimierte Schaltung dazu ausspuckt
Was ist das genau?

Danke, für eure Ideen!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 16. November 2007, 20:22

SchneiderWeisse hat geschrieben:Was ist das genau?
Etwa Prolog.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Freitag 16. November 2007, 21:03

Du könntest Dir auch mal folgende Knobelaufgabe anschauen und sie a) lösen und b) ein Skript schreiben, das den umgekehrten Weg geht und solche Listen erstellt.

http://www.python-forum.de/topic-12570.html
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Freitag 16. November 2007, 23:16

BlackJack hat geschrieben:Du könntest Dir auch mal folgende Knobelaufgabe anschauen und sie a) lösen und b) ein Skript schreiben, das den umgekehrten Weg geht und solche Listen erstellt.

http://www.python-forum.de/topic-12570.html
Hrhr, Ich hab jetzt länger daran gehabt deine Lösung in Haskell zu verstehen als daran das eigentliche Problem zu lösen aber immerhin ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

Samstag 17. November 2007, 00:04

Hier wäre dann die Rückrichtung in Haskell:

Code: Alles auswählen

import List

main = interact (show . map (map (\x -> (head x, length x)) . group) . lines)
Die "Lösung" einfach reinpipen und heraus kommt die "Aufgabe" :-)
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Samstag 17. November 2007, 00:34

BlackJack, Kannst du mir mal verraten wie du zu auf so etwas kommst?
Ist das einfach nur Übung/Erfahrung mit der funktionalen Programmierung, Genialität oder schwarze Magie? ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

Samstag 17. November 2007, 01:26

Alles zusammen. ;-)

Im Ernst, wenn man das Stück für Stück entwickelt und immer testet ist das gar nicht so schwer. Die Entstehung: Am Anfang steht immer die `id`-Funktion die nichts macht. Merke: Wer nichts macht, macht auch nichts falsch. ;-)

Code: Alles auswählen

main = interact id
----
bj@s8n:~$ echo -e 'aaabbbb\nccddddd' | runhaskell test.hs ; echo
aaabbbb
ccddddd
Eingabe in Zeilen aufteilen (`lines`) und die Liste wieder in eine Zeichenkette umwandeln (`show`). `show` ist sozusagen das `repr()` von Haskell.

Code: Alles auswählen

main = interact (show . lines)
----
bj@s8n:~$ echo -e 'aaabbbb\nccddddd' | runhaskell test.hs ; echo
["aaabbbb","ccddddd"]
Jetzt in jeder Zeichenkette die Zeichen gruppieren.

Code: Alles auswählen

main = interact (show . map group . lines)
----
bj@s8n:~$ echo -e 'aaabbbb\nccddddd' | runhaskell test.hs ; echo
[["aaa","bbbb"],["cc","ddddd"]]
Nun muss man nur noch von jeder Gruppe das Zeichen und die Anzahl bestimmen.

Code: Alles auswählen

main = interact (show . map (map (\x -> (head x, length x)) . group) . lines)
----
bj@s8n:~$ echo -e 'aaabbbb\nccddddd' | runhaskell test.hs ; echo
[[('a',3),('b',4)],[('c',2),('d',5)]]
Und das war's auch schon. :-)

Beim Lösen des Rätsels war das komplizierteste, dass `replicate` die Argumente einzeln und in umgekehrter Reihenfolge haben wollte. Das geht in Python mit `itertools.starmap()` und `operator.mul()` etwas direkter.

Code: Alles auswählen

from itertools import starmap
from operator import mul

print '\n'.join(''.join(starmap(mul, row)) for row in data)
`data` enthält die Liste.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Samstag 17. November 2007, 21:11

SchneiderWeisse, wenn du es noch nicht kennst, moechte ich dir das Pythonchallenge ans Herz legen:http://www.pythonchallenge.com. Passt zwar nicht ganz zu deinem Wunsch nach einem Projekt, da man dort eher kleinere Aufgaben loest, aber man lernt noch ne Menge dabei. :)
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Montag 19. November 2007, 08:41

SchneiderWeisse hat geschrieben:Hallo,

das passt jetzt vllt. nicht ganz in diesen Bereich, aber wenigstens der Name "Idee" hat gepasst.

Also, ich bin auf der Suche nach einem Projekt, mit dem ich meine Python Kenntnisse erweitern kann und das gleichzeitig nicht zu schwer ist... Bisher habe ich das Buch "Python Ge-Packt" von Michael Weigend durchgearbeitet und verfüge somit über Kenntnisse dieses Buches.

Was sollte das Projekt sein:

- rein Softwarebasierend (keine grafischen messauswertungen etc.)
- nicht zuuu schwer
- in gewisser Weise nützlich


Ich habe schon länger überlegt, nur leider fällt mir nichts Sinnvolles ein...

Jemand eine Idee oder wenigstens eine Richtung?!

Vielen Dank!
MfG
Genauso habe ich mit der Sprache begonnen. :roll:
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Dienstag 20. November 2007, 00:21

SchneiderWeisse,

wie wäre es mit einem Spiel? Nicht immer ist dort eine komplexe Grafik notwendig. Ein Textadventure ist meiner Erfahrung nach ein gutes Beispiel, sich in objektorientierter Programmierung und wahlweise auch in Metaprogrammierung zu üben. Ich persönlich könnte mich auch für rundenbasierte Strategiespiele begeistern, aber ohne dass dich das Thema fesselt wirst du dich wohl schwer tun, in diese Richtung ein Projekt zu machen. Außerdem besteht die Gefahr, an der möglichen Komplexität solcher Projekte zu ersticken.

Standardaufgabe im Informatikunterricht (jedenfalls wenn man man wie ich noch Lisp gelernt hat) wäre Formeln wie "x^2 - x" einlesen zu können und davon die erste Ableitung zu berechnen (2x-1) und dann komplexe Ergebnisse zu vereinfachen. Kann auch spannend und erhausfordernd sein. Oh, einen eigenen kleinen Lisp bzw. Scheme-Interpreter zu bauen, ist eine Aufgabe der Art, wie ich sie spannend finde. Und man lernt Scheme, IMHO sollte jeder diese Sprache kennen. Ist wie Latein oder Griechisch: Wird vielleicht nicht mehr aktiv gesprochen (benutzt), aber entscheidend für die Entwicklung jüngerer Sprachen und für die Kultur der Software-Entwicklung.

Ansonsten bieten sich diverse Webseiten mit mathematischen Knobeleien an, die man dort wohl zwar eigentlich durch Nachdenken lösen soll, aber auch häufig algorithmisch ausrechnen kann. Oder wie wäre es mit einem Programm, dass zu einem gegebenen Datum das Äquivalent im Maya-Kalender (und umgekehrt berechnet). Bonusaufgabe ist dann zu berechnen, was die Welt untergeht bzw. das nächste Zeitalter beginnt (ob dazu die Welt untergehen muss ist glaube/hoffe ich umstritten ;)

Stefan
Antworten