Random für kleine taxt ausgaben

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
skunkk90
User
Beiträge: 57
Registriert: Donnerstag 1. Juni 2006, 20:38
Wohnort: F:\Homeverzeichnis.zip
Kontaktdaten:

hatte ein jahr python in der schule und das is auch noch lange her
das vorne weg^^

hallo erstma,
habe vor ein programm zu schreiben, dass bei jedem start von windows einen satz ausgibt (in diesem fall soll es ein witz sein)...

dazu muss ich wissen:
1. wie bekomme ich die witze in eine .dat datei oder ahnlichem, sodass der user sie nicht vorne weg lesen kann

2. wie gibt mein programm zufällig einen dieser witze aus

und 3. wie bekomme ich anschliessend dieses programm in den autostart von windows? (wie ich eine pyw/py datei in exe umwandle weiss ich!)


sehr viel ich weiss, mir ist es aber wichtig, wäre wirklich sehr nett wenn ihr mir helfen könntet, mfg
skunkk!
Humor ist, wenn man trotzdem lacht!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

skunkk90 hat geschrieben:1. wie bekomme ich die witze in eine .dat datei oder ahnlichem, sodass der user sie nicht vorne weg lesen kann
2. wie gibt mein programm zufällig einen dieser witze aus
Hi skunkk!

Das mit den Witzen könnte so funktionieren:

Code: Alles auswählen

#!/usr/bin/env python -O
# -*- coding: iso-8859-1 -*-

import base64
import random
import os.path
import shelve, pickle

FILENAME = r"witze.dat"


def main():
    # Witze schreiben, falls noch nicht vorhanden (base64-verschlüsselt)
    if not os.path.isfile(FILENAME):
        dat = shelve.open(FILENAME, "c", pickle.HIGHEST_PROTOCOL)
        witze = (
            (
                "Das ist der erste Witz.\n"
                "Mit Zeilenumbruch."
            ),
            "Das ist der zweite Witz",
            "Das ist der 3 Witz",
            "Das ist der 4 Witz",
            "Das ist der 5 Witz",
            "Das ist der 6 Witz",
            "Das ist der 7 Witz",
            "Das ist der 8 Witz",
        )
        for witz in witze:
            dat[base64.b64encode(witz)] = False
        dat.close()
    
    # Witze einlesen
    dat = shelve.open(FILENAME, "w", pickle.HIGHEST_PROTOCOL)
    witze = []
    for witz, erzaehlt in dat.iteritems():
        if not erzaehlt:
            witze.append(base64.b64decode(witz))
    
    # Zufallswitz ausgeben
    if witze:
        witz = random.choice(witze)
        print witz
    
        # Zufallswitz als "erzaehlt" markieren
        dat[base64.b64encode(witz)] = True
    else:
        print "Es wurden alle Witze erzaehlt"
    
    dat.close()


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
skunkk90
User
Beiträge: 57
Registriert: Donnerstag 1. Juni 2006, 20:38
Wohnort: F:\Homeverzeichnis.zip
Kontaktdaten:

omg...
also dass des mit python lang her is weisste ja^^

puh des is ganz shcön viel tuback uff einma, ich denke wir sollten des in einzelnen schritten machen 8)

also ich denke der erste schritt sollte sein wie ich die ca. 200 witze erstma dem programm eingebe, in eine datei, die der benutzer nicht öffnen kann!
denn ich verstehe zB diese sachen wie shelve und base64 und sowas gar nicht :cry:

danach solltest du mir des random erklären, schliesslich soll bei jedem start von windows EIN witz zufällig ausgegeben werden....

also mir ist als erstes diese sache mit dem einlesen wichtig, was base64 bedeutet etc.

wär sehr nett von dir :wink:
Humor ist, wenn man trotzdem lacht!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

skunkk90 hat geschrieben:puh des is ganz shcön viel tuback uff einma, ich denke wir sollten des in einzelnen schritten machen 8)
Hi skunkk!

Hier habe ich Lesestoff für dich. Das solltest du dir auf jeden Fall ansehen.

- http://www.python-forum.de/topic-6157.html
- http://docs.python.org/lib/module-shelve.html
- http://docs.python.org/lib/module-base64.html
- http://docs.python.org/lib/module-random.html

Danach kannst du hier die Fragen stellen, die noch offen geblieben sind.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
skunkk90
User
Beiträge: 57
Registriert: Donnerstag 1. Juni 2006, 20:38
Wohnort: F:\Homeverzeichnis.zip
Kontaktdaten:

Meine Funny Startup.pyw

Code: Alles auswählen

# -*- coding: cp1252 -*-
from Tkinter import*
from ScrolledText import*
from random import*
import os

hf=Tk()
hf.iconbitmap('favicon.ico')
frame1=Frame(hf,width=300,height=175)
frame1.pack()
hf.title("Funny Startup! Hallo!")

def close():
    hf.destroy()

def link():
    os.startfile("http://www.skunkk-online.de.vu")

def start():
    ### Wie setze ich Random hier ein, dass von der Datei (witze.dat)
    ### ein Witz zufällig im ausgabefeld ausgegeben wird?
    a=???



closebutton=Button(frame1,command=close, text="Beenden",width=20)
closebutton.place(x=2,y=150)
ausgabefeld=ScrolledText(frame1,width=45,height=8)
ausgabefeld.place(x=2,y=2)
offnenbutton=Button(frame1,command=start, text="Ich will noch 'nen Witz",width=20)
offnenbutton.place(x=2,y=125)
linkbutton=Button(frame1,text="powered by\nwww.skunkk-online.de.vu",command=link,width=24,height=3,relief="flat",font=("Arial",7,"underline"))
linkbutton.place(x=140,y=125)

hf.mainloop()
witze.dat:
save.py

Code: Alles auswählen

s= "Das ist der erste Witz!\n"\
   "Das ist der zweite Witz!\n"\
   "Das ist der dritte Witz!\n"

f=file("witze.dat","w")
f.write(s)
f.close()
read.py

Code: Alles auswählen

f = file("witze.dat", "r")
lines = f.readlines()
f.close()
print lines
dummy=raw_input()
Humor ist, wenn man trotzdem lacht!
Antworten