Seite 1 von 1
Suche Idee zum Erlernen von Python...
Verfasst: Freitag 16. November 2007, 16:44
von nemomuk
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
Verfasst: Freitag 16. November 2007, 18:50
von Panke
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
Re: Suche Idee zum Erlernen von Python...
Verfasst: Freitag 16. November 2007, 19:07
von Leonidas
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].
Verfasst: Freitag 16. November 2007, 19:22
von Imperator
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.
Verfasst: Freitag 16. November 2007, 19:35
von Leonidas
Spaces in URLs? Davon würde ich absehen

Verfasst: Freitag 16. November 2007, 19:39
von nemomuk
aussagenlogische Ausdrücke einliest, auswertet, vereinfacht und die passende minimierte Schaltung dazu ausspuckt
Was ist das genau?
Danke, für eure Ideen!
Verfasst: Freitag 16. November 2007, 20:22
von Leonidas
SchneiderWeisse hat geschrieben:Was ist das genau?
Etwa Prolog.
Verfasst: Freitag 16. November 2007, 21:03
von BlackJack
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
Verfasst: Freitag 16. November 2007, 23:16
von veers
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

Verfasst: Samstag 17. November 2007, 00:04
von BlackJack
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"

Verfasst: Samstag 17. November 2007, 00:34
von veers
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?

Verfasst: Samstag 17. November 2007, 01:26
von BlackJack
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.
Verfasst: Samstag 17. November 2007, 21:11
von Rebecca
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.

Re: Suche Idee zum Erlernen von Python...
Verfasst: Montag 19. November 2007, 08:41
von skypa
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.

Verfasst: Dienstag 20. November 2007, 00:21
von sma
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
Verfasst: Montag 9. Juni 2008, 18:43
von Nagila Hawa
Moin!
Ich habe Python selbst gerade erst kennengelernt. In C habe ich aber ein Programm geschrieben, daß Eine Wahrheitstabelle (Digitaltechnik) mithilfe des
Quine/McCluskey-Verfahrens in eine kleinstmögliche logische Funktion umwandelt.
War viel zu "knobeln" und sehr viel zu optimieren, aber im Prinzip einfach zu verstehen. War eine gute Wahl als Seminaraufgabe für C und sollte mit Python noch wesentlich schneller und einfacher gehen. Das Verfahren ist allerdings auch sehr zeitkritisch, da kann man mit Python wohl keine Preise gewinnen...
Ach ja: Hallo erstmal, hoffe mal mit Python kann man so schön einfach und schnell entwickeln, wie es auf dem ersten Blick aussieht.
Falls du Anregungen brauchst, kann ich dir den C-Quellcode vielleicht auch zur Verfügung stellen. Müßte noch auf irgendeiner Backup-CD rumfliegen...
Edit (Leonidas): Diskussion getrennt. Rest in Scheme vs. FUD.
Verfasst: Montag 7. Juli 2008, 15:10
von vectrex
Falls Du Linuxer bist, würde ich mir eventuell mal den TuxDroid anschauen, den kann man mittels Python API programmieren. Ein tolles "Spielzeug" das einem Spass macht um damit Python zu lernen und man kann auch nützliches damit anstellen. Oder Scripts von anderen an eigene Bedürfnisse anpassen.
Link: http://www.tuxisalive.com/
sympy
Verfasst: Mittwoch 22. Oktober 2008, 10:30
von farid
sma hat geschrieben: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.
http://sympy.org/
