Hallo,
naja wenns hier um Ideen geht, dann glaub ich kann ich das hier auch posten
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
Danke
Greetz
Ideenlos :D
-
- 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.
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
zugegeben, vor dieser Frage stehe ich auch manchmal.
Ganz zum Anfang, weiß man natürlich erst recht nicht so richtig.
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Klar: Vorschläge.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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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 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 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^^
http://svn.projectdream.org/people/mkub ... ets/trunk/ <--geht nich 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 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^^
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
Hat zimlich gut geklappt...
Wenn du willst kannste bei meinen project mithelfen XD
Die Schrebfehler sind absicht und dienen der Belustigung.
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 :'(
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 :'(
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...
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also ich seh da durchaus was.CrackPod hat geschrieben:http://svn.projectdream.org/people/mkub ... ets/trunk/ <--geht nich ich seh zumindest nix
Glaube ich nicht. Parser zu erstellen ist sehr einfach, darauf habe ich Wert gelegt. Beispiel.CrackPod hat geschrieben:Und das mit dem Radio wird mir zu kompliziert sein.
Wie du meinst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi CrackPod!CrackPod hat geschrieben:Aber bitte nich alzu schwere Dinge
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 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.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
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 )
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.
Also die Caesar-Verschlüsselung hab ich nich gemacht.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...
Aber ne andere. Is allerdings noch sehr ausbaubedüftig
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'))
Trotzdem seh ich bei dem Link irgendwie nix
Zuletzt geändert von CrackPod am Dienstag 4. Juli 2006, 13:31, insgesamt 2-mal geändert.
Einiges ist auch ein kleines bischen umständlich gelöst. Das lässt sich vereinfachen.CrackPod hat geschrieben:Also die Caesar-Verschlüsselung hab ich nich gemacht.
Aber ne andere. Is allerdings noch sehr ausbaubedüftig
`tempStr` ist unnötig und die Art wie Du die Kopie erzeugst ist etwas umständlich. ``tempStr = list(s)`` hätte ausgereicht.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
Das Du `i` in der Schleife erst an eine Zeichenkette und im Rumpf dann an eine Zahl bindest ist ein wenig unsauber.
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 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
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)
Ich auch nicht. Man muss einen Browser benutzen, der mit XML und XSLT Stylesheets etwas anfangen kann.Trotzdem seh ich bei dem Link irgendwie nix
Dacht ich mir schonBlackJack hat geschrieben:Einiges ist auch ein kleines bischen umständlich gelöst. Das lässt sich vereinfachen.
Bei pop wusst ich nich, was ich übergeben soll, damit er den letzten Eintrag nimmt.BlackJack hat geschrieben:Die ersten vier Zeilen bekommt man auf zwei, wenn man die `pop()` Methode benutzt.
Code: Alles auswählen
result = [(ord(c) + add_number) * pre_multiplied for c in string]
Code: Alles auswählen
return ''.join(chr(i // pre_multiplied - add_number) for i in data)
extend is die neuere Version von append kann das sein?
Wenn nichts angegeben wird, dann ist der letzte die Voreinstellung. Ansonsten hätte man auch, wie beim Index, eine -1 nehmen können.CrackPod hat geschrieben:Bei pop wusst ich nich, was ich übergeben soll, damit er den letzten Eintrag nimmt.BlackJack hat geschrieben:Die ersten vier Zeilen bekommt man auf zwei, wenn man die `pop()` Methode benutzt.
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
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.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?Code: Alles auswählen
return ''.join(chr(i // pre_multiplied - add_number) for i in data)
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:
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.extend is die neuere Version von append kann das sein?
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]
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 Die schreibst du nich selber oder?!
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 Die schreibst du nich selber oder?!
@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.
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.