Ideenlos :D

Du hast eine Idee für ein Projekt?
Antworten
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hallo,

naja wenns hier um Ideen geht, dann glaub ich kann ich das hier auch posten :D
Also: Ich hab derzeitig keine Ideen, was ich programmieren könnte. Da ich mich aber richtig in Python reinarbeiten will, wollt ich mal fragen, ob mir jemand ein paar Sachen sagen kann, die ich proggen kann.
Aber bitte nich alzu schwere Dinge :wink:

Danke
Greetz
Andy
User
Beiträge: 196
Registriert: Sonntag 1. Januar 2006, 20:12
Wohnort: aus dem hohen Norden....

Hallo CrackPod,

zugegeben, vor dieser Frage stehe ich auch manchmal.
Ganz zum Anfang, weiß man natürlich erst recht nicht so richtig. :roll:

Es kommt so´n bischl auf die Verwendbarkeit in Deinem Interessengebiet an.

- Wozu willst Du proggen?
- Was musst Du können, damit Du später mal.....
- und vor allem wie: Konsole, GUI Tk...wxpython.....

Wie wär´s mit`nen Taschenrechner, Kalender, Uhr :?:
gruss andy
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:Da ich mich aber richtig in Python reinarbeiten will, wollt ich mal fragen, ob mir jemand ein paar Sachen sagen kann, die ich proggen kann.
Klar: Vorschläge.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Also mit Pygame hab ich mich noch nich befasst. Also is das turtle Spiel weg.
http://svn.projectdream.org/people/mkub ... ets/trunk/ <--geht nich :D ich seh zumindest nix
Und das mit dem Radio wird mir zu kompliziert sein.

Naja am anfang würd ich eher viel Konsole machen. Is 1. irgendwie cooler :D Und wenn ich dann das GUI mäßiges will, dann is das ja keine große Umstellung. Da muss doch dann nur noch das GUI geschrieben werden oder? (is zumindest bei Java so^^)
Kalender hört sich nich schlecht an. Nur eines wär sicher praktisch: Ein gutes, klar strukturiertes Manual. Aber sollte auf deutsch sein. Zumin teilweise, da ich mich bei Programmier Manuals irgendwie immer schwer tu^^
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

Also das erste was ich gemacht habe ist ein Verschlüsselungsprogramm in der Caesar-Art.

Hat zimlich gut geklappt...

Wenn du willst kannste bei meinen project mithelfen XD
Die Schrebfehler sind absicht und dienen der Belustigung.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Wenns ne dumme Frage is: Tut mir Leid, aber was is die Caesar-Art?

Was is dein Projekt? V.a. wie schwer isses?
Und eine Deutsche Dokumentation gibts nich? Irgendwie postet nämlich keiner eine xD Google spuckt auch nich wirklich was aus :'(
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

Also dei Caesar-Verschlüsselung ist wie gesagt von Caesar erfunden worden.

Dabei ist das alphabet um 4 Buchstaben verschoben.
Also:
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D

Danach kann man mit schwereren verschlüsselugnen herumprobieren...
Die Schrebfehler sind absicht und dienen der Belustigung.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:http://svn.projectdream.org/people/mkub ... ets/trunk/ <--geht nich :D ich seh zumindest nix
Also ich seh da durchaus was.
CrackPod hat geschrieben:Und das mit dem Radio wird mir zu kompliziert sein.
Glaube ich nicht. Parser zu erstellen ist sehr einfach, darauf habe ich Wert gelegt. Beispiel.

Wie du meinst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

CrackPod hat geschrieben:Aber bitte nich alzu schwere Dinge :wink:
Hi CrackPod!

Wie wärs mit einer Adressendatenbank. Als Basis SQLite. Lokale Einstellungen in eine INI-Datei (mit ConfigParser). Einfachste Textoberfläche. Kommandozeilenparameter mit "optparse"

Code: Alles auswählen

>>> adressdb --search-lastname="*enz*"
2 addresses found:
- 1 Gerold P*enz*
- 2 Bernhard P*enz*
Select address: 2
...
...
Dann die Textoberfläche mit "gettext" internationalisieren.

Dann eine wxPython-Oberfläche zum Eingeben und Abfragen der Adressen. Einfache Suche nach Teilen der Adresse ermöglichen. Liste der Adressen. Sortierbare Liste. Wieder mit gettext internationalisieren.

Mit dem ReportManager http://reportman.sourceforge.net/ die Daten der Datenbank in Berichtsform ausdrucken lassen. Über das Kommandozeilentool -- das genügt. Man muss ja nicht alles in Python einbinden.

Übergabe der Adressdaten in die Zwischenablage, damit diese in anderen Programmen verwendet werden kann. Cut & Paste, Drag & Drop.

Serienbriefe mit den Adressen über OpenOffice.

Export der Adressen. Import der Adressen.

Mit den Adressen Zusatzinformationen verwalten:
- Wann hat wer mit wem zuletzt gesprochen? Was wurde ausgemacht?
- Wer hat wann mit wem einen Termin? Wann sollte man sich bei wem melden?

Wenn man bei so einem Beispiel nichts lernt, dann esse ich einen Besen samt Putzfrau. :-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

Also wie gesagt man KANN mir auch bei meinen Project helfen.

Wird ein textadventure und diue Story is aufm Blatt + 3 verscheidene Enden!!! Wird wohl auch nicht so schwer werden da ich auch ein anfänger bin ;)

Wenn ihr wollt erstell ich ein extra thread. (ob ich das weert bin XD )
Die Schrebfehler sind absicht und dienen der Belustigung.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Valnar hat geschrieben:Also dei Caesar-Verschlüsselung ist wie gesagt von Caesar erfunden worden.

Dabei ist das alphabet um 4 Buchstaben verschoben.
Also:
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D

Danach kann man mit schwereren verschlüsselugnen herumprobieren...
Also die Caesar-Verschlüsselung hab ich nich gemacht.
Aber ne andere. Is allerdings noch sehr ausbaubedüftig :D

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
import random

def decode(s):
    expRandInt = random.randint(1,5)
    addRandInt = random.randint(1,50)
    #print 'exp',expRandInt
    #print 'add',addRandInt
    tempStr = []
    decode = []
    for i in s:
        tempStr.append(i)
    for i in tempStr:
        i = (ord(i))+addRandInt
        i = i*(addRandInt * expRandInt)
        decode.append(i)
    decode.append(addRandInt)
    decode.append(expRandInt)
    return decode

def encode(s):
    expRandInt = s[-1]
    addRandInt = s[-2]
    del s[-1]
    del s[-1]
    #print 'exp',expRandInt
    #print 'add',addRandInt
    tempStr = []
    encode = []
    for i in s:
        tempStr.append(i)
    for i in tempStr:
        i = (i/(addRandInt * expRandInt)) - addRandInt
        #print i
        i = chr(i)
        encode.append(i)
    s = ''.join(encode)
    return s

#Test beginnt hier:#
print 'SimpleEncode: Ein String wird in die ASCII Zahlen umgewandelt,
danach mit einer Zufallszahl addiert, danach malgenommen mit dem Produkt von 2 Zufallszahlen. Danach wird er wieder zurückgewandelt.'
decoded = decode('string')
print decoded
print encode(decoded)
print '--------------'
print encode(decode('string'))
Für die anderen: Danke für die Vorschläge
Trotzdem seh ich bei dem Link irgendwie nix :D
Zuletzt geändert von CrackPod am Dienstag 4. Juli 2006, 13:31, insgesamt 2-mal geändert.
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

also mein quelltext is ungefähr halbsolang o0

Ich werde den morgen mal hier rienschreiben ;)
Die Schrebfehler sind absicht und dienen der Belustigung.
BlackJack

CrackPod hat geschrieben:Also die Caesar-Verschlüsselung hab ich nich gemacht.
Aber ne andere. Is allerdings noch sehr ausbaubedüftig :D
Einiges ist auch ein kleines bischen umständlich gelöst. Das lässt sich vereinfachen.

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
import random

def decode(s):
    expRandInt = random.randint(1,5)
    addRandInt = random.randint(1,50)
    #print 'exp',expRandInt
    #print 'add',addRandInt
    tempStr = []
    decode = []
    for i in s:
        tempStr.append(i)
    for i in tempStr:
        i = (ord(i))+addRandInt
        i = i*(addRandInt * expRandInt)
        decode.append(i)
    decode.append(addRandInt)
    decode.append(expRandInt)
    return decode
`tempStr` ist unnötig und die Art wie Du die Kopie erzeugst ist etwas umständlich. ``tempStr = list(s)`` hätte ausgereicht.

Das Du `i` in der Schleife erst an eine Zeichenkette und im Rumpf dann an eine Zahl bindest ist ein wenig unsauber.

Code: Alles auswählen

def encode(s):
    expRandInt = s[-1]
    addRandInt = s[-2]
    del s[-1]
    del s[-1]
    #print 'exp',expRandInt
    #print 'add',addRandInt
    tempStr = []
    encode = []
    for i in s:
        tempStr.append(i)
    for i in tempStr:
        i = (i/(addRandInt * expRandInt)) - addRandInt
        #print i
        i = chr(i)
        encode.append(i)
    s = ''.join(encode)
    return s
Die ersten vier Zeilen bekommt man auf zwei, wenn man die `pop()` Methode benutzt. Für `tempStr` gilt das gleiche wie oben.

Code: Alles auswählen

def decode(string):
    add_number = random.randint(1, 50)
    mult_number = random.randint(1, 5)
    pre_multiplied = add_number * mult_number
    result = [(ord(c) + add_number) * pre_multiplied for c in string]
    result.extend((add_number, mult_number))
    return result

def encode(data):
    mult_number = data.pop()
    add_number = data.pop()
    pre_multiplied = add_number * mult_number
    return ''.join(chr(i // pre_multiplied - add_number) for i in data)
Trotzdem seh ich bei dem Link irgendwie nix :D
Ich auch nicht. Man muss einen Browser benutzen, der mit XML und XSLT Stylesheets etwas anfangen kann.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

hm, also kopete tuts schonmal nich :D
Welcher kann das?
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

BlackJack hat geschrieben:Einiges ist auch ein kleines bischen umständlich gelöst. Das lässt sich vereinfachen.
Dacht ich mir schon :D
BlackJack hat geschrieben:Die ersten vier Zeilen bekommt man auf zwei, wenn man die `pop()` Methode benutzt.
Bei pop wusst ich nich, was ich übergeben soll, damit er den letzten Eintrag nimmt.

Code: Alles auswählen

result = [(ord(c) + add_number) * pre_multiplied for c in string]
Ach so ging das ^^ Ich das for .. in am Anfang des Codes geschrieben und Syntaxerror bekommen :D

Code: Alles auswählen

return ''.join(chr(i // pre_multiplied - add_number) for i in data)
Fehlen da nich die []? Wenn nich warum? Is ja trotzdem ne Iteration, auch wenn sie in ner Funktion aufgerufen wird oder seh ich da was falsch?
extend is die neuere Version von append kann das sein?
BlackJack

CrackPod hat geschrieben:
BlackJack hat geschrieben:Die ersten vier Zeilen bekommt man auf zwei, wenn man die `pop()` Methode benutzt.
Bei pop wusst ich nich, was ich übergeben soll, damit er den letzten Eintrag nimmt.
Wenn nichts angegeben wird, dann ist der letzte die Voreinstellung. Ansonsten hätte man auch, wie beim Index, eine -1 nehmen können.

Code: Alles auswählen

In [16]: list.pop?
Type:           method_descriptor
Base Class:     <type 'method_descriptor'>
String Form:    <method 'pop' of 'list' objects>
Namespace:      Python builtin
Docstring:
    L.pop([index]) -> item -- remove and return item at index (default last)


In [17]: [1, 2, 3].pop(-1)
Out[17]: 3

Code: Alles auswählen

return ''.join(chr(i // pre_multiplied - add_number) for i in data)
Fehlen da nich die []? Wenn nich warum? Is ja trotzdem ne Iteration, auch wenn sie in ner Funktion aufgerufen wird oder seh ich da was falsch?
Die eckigen Klammern fehlen nicht, da es keine list comprehension sondern eine generator expression ist. Ist im Grunde das gleiche nur das eben keine Liste als Ergebnis rauskommt, sondern ein Iterator. So eine generator expression muss man in runde Klammern setzen, es sei denn sie ist sowie so schon in runde Klammern eingeschlossen, wie z.B. bei einem Funktionsaufruf.

Code: Alles auswählen

In [18]: a = [x**2 for x in (0, 1, 2, 3)]

In [19]: a
Out[19]: [0, 1, 4, 9]

In [20]: b = (x**2 for x in (0, 1, 2, 3))

In [21]: b
Out[21]: <generator object at 0xb7bea0ac>

In [22]: b.next()
Out[22]: 0

In [23]: b.next()
Out[23]: 1

In [24]: b.next()
Out[24]: 4

In [25]: b.next()
Out[25]: 9

In [26]: b.next()
---------------------------------------------------------------------------
exceptions.StopIteration    Traceback (most recent call last)

/home/marc/<ipython console>

StopIteration:
Der Vorteil von genexps ist, das nicht erst eine Liste mit allen Ergebnissen erzeugt wird, sondern das man die einzelnen Ergebnisse dann erzeugen lassen kann, wenn man sie braucht.
extend is die neuere Version von append kann das sein?
Nein, die beiden Methoden machen etwas unterschiedliches. `append()` hängt ein Objekt an eine Liste an und `extend()` nimmt ein iterierbares Objekt entgegen und erweitert die Liste um dessen Inhalt.

Code: Alles auswählen

In [29]: a = [1, 2]

In [30]: a.append([3, 4])

In [31]: a
Out[31]: [1, 2, [3, 4]]

In [32]: b = [1, 2]

In [33]: b.extend([3, 4])

In [34]: b
Out[34]: [1, 2, 3, 4]
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

Oh man gitb es ein Wörterbuch Deutsch pythonisch - Pythonisch -Deutshc?

Als N00b versteh man manchmal goarneichts! :P
Die Schrebfehler sind absicht und dienen der Belustigung.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

naja, ich verstehs schon, einige Wörter sind neu, werden aber durch die Erklärung klar...

Wo is der Unterschied zu ner Liste und einem Iterator?
Ich mein auf einen String kann man ja auch per s[x] zugreifen. also is das doch auch eine Liste?!
Und noch was: Wie erzeugst du diese Wunderbaren ausgaben? Die taugen mir ziemlich :D Die schreibst du nich selber oder?!
BlackJack

@Valnar:

Das meiste wird im Tutorial behandelt. Auf deutsch wird sich einiges im Wiki ([wiki])[/wiki]finden lassen.

@CrackPod:

Bei einer Liste kannst Du auf jedes Element jederzeit zugreifen. Ein Iterator ist ein Objekt mit einer `next()` Methode die immer jeweils das nächste Element zurückgibt.

Wenn ein Objekt den Zugriff auf einzelne Elemente über einen Index in eckigen Klammern unterstützt und mit ``len(obj)`` die Anzahl der enthaltenen Elemente liefert, dann spricht man von einer "Sequenz" oder einem Objekt, das das Sequenzprotokoll versteht. Davon gibt's eine ganze Menge, zum Beispiel Listen, Tupel, Zeichenketten, `array.array` usw. und man kann sich auch eigene Objekte dieser Art erschaffen indem man die Methoden `__len__()`, `__getitem__()` und `__setitem__()` geeignet implementiert. Letzteres nur wenn man mit `obj[x] = y` auch Zuweisungen erlauben möchte.

Ich benutze ipython als interaktive Python-Shell. Da kommen die `In`/`Out` Ausgaben her.
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

Ja die meisten aber nicht alle...
Die Schrebfehler sind absicht und dienen der Belustigung.
Antworten