Seite 1 von 1
Sloganmaker in Python
Verfasst: Donnerstag 6. Dezember 2012, 16:21
von SemperPython
Hallo!
Ich möchte hier mein neues Projekt vorstellen: Sloganmaker
Die Sloganstücke sind von www.sloganmaker.com, der Code von mir.
Wegen der langen Liste sieht der Code etwas merkwuerdig aus.
Code: Alles auswählen
import random
slogans = ["ist gut fuer die Nerven", "kann es better", " - Vorsicht!Zerbrechlich!", "der wahre Traum.", "ist unmoeglich", " - bleibt immer die Nummer 1.", "fuer die Rest der Nacht", "4eva!",
"wuerde fuer alles kaempfen","mach dich frisch", "fuer Vergnuegen und Energie", "verbindet.", "ist bei dir innen drin", "ist unglaublich", "ist immer frisch", "ist zueruck",
" - and where is you god now?", " - Solange der Vorrat reicht","drowned too","fuer ein lebendigeres Leben", "- einfach das frischeste","rettet deine Nerven","Nonstop",
"macht dich besser"," - eine niemals endende Story","geht unter die Haut"]
word = input("Tippen Sie ein Wort ein,wie z.B. ihren Namen, um ein Slogan zu erstellen: ")
def slogans_machen():
print(word, random.choice(slogans))
slogans_machen()
ende = input("Noch ein Slogan? Y/N ")
if ende == "Y":
slogans_machen()
Re: Sloganmaker in Python
Verfasst: Donnerstag 6. Dezember 2012, 17:13
von /me
slogans_machen ist der falsche Begriff. Erstens ist es nur ein Slogan (nicht mehrere) und zweitens macht die Routine den Slogan nicht nur, sondern gibt ihn auch noch aus. Zweiteres würde ich vermeiden, da du dir damit unnötig Flexibilität wegnimmst.
Du kannst damit das Modul nicht sinnvoll woanders einbinden um dir nur einen Slogan erstellen zu lassen und ihn dann beispielsweise auf einer Webseite auszugeben.
Du beschränkst dich auf Slogans in denen das eingegebene Wort am Anfang steht. Mit passender Stringformatierung kann man das auch anders gestalten
Zum Schluss kannst du mit deinem Ansatz nur eine einzige Wiederholung durchführen.
Die lange Liste kannst du problemlos direkt im Sourcecode auf mehrere Zeilen verteilen.
Code: Alles auswählen
import random
slogans = [
'bedeutet Freundschaft',
'bringt Erinnerungen zurück',
'hat es',
'ist der Unterschied',
'Ohne {} geht es nicht',
'Sag es mit {}'
]
def create_slogan(word):
slogan = random.choice(slogans)
if not '{' in slogan:
slogan = '{} ' + slogan
return slogan.format(word)
def main():
word = raw_input("Geben Sie ein Wort ein, wie z.B. Ihren Namen, um einen Slogan zu erstellen: ")
while True:
print(create_slogan(word))
result = input('Noch einen Slogan? Y/N ')
if result not in 'yY':
break
if __name__ == '__main__':
main()
Bei der Stringformatierung habe ich einfach den passenden Platzhalter an die erste Stelle gesetzt wenn im Slogan-Template nicht bereits ein Platzhalter vorhanden ist. Die Y/N-Abfrage könnte man noch schöner gestalten, aber das soll erst einmal reichen
Re: Sloganmaker in Python
Verfasst: Donnerstag 6. Dezember 2012, 17:32
von SemperPython
Ja, ich wollte schon so einiges fixen.Das Programm habe ich mal soeben schnell geschrieben und ich fand ihn gut genug um ihn vorzustellen.Leider stimmt es doch nicht

.Man lernt nie aus.Das "ende" Problem und das Problem,in dem das eingebebene Wort am Anfang steht.Aufjedenfall; danke fuer deine Antwort.
Was macht :
?
Re: Sloganmaker in Python
Verfasst: Donnerstag 6. Dezember 2012, 17:55
von /me
Bitte keine unnötigen Vollzitate.
SemperPython hat geschrieben:Was macht :
?
__name__ enthält den String '__main__' wenn es sich um das Hauptprogramm handelt. Wurde das Modul hingegen importiert, dann enthält __name__ den Namen des Moduls. Wird das Programm importiert, so ist __name__ nicht '__main__' und der Aufruf von main() wird nicht durchgeführt.
Probiere es einfach mal aus.
foo.py
bar.py
Ruf einmal foo.py und einmal bar.py auf und achte auf die Ausgaben.
Man erreicht damit, dass man Code viel leichter wiederverwenden kann. So kann man mit diesem Ansatz das slogans-Modul importieren um die Funktion zum Erstellen eines Slogans zu benutzen ohne dass der interaktive Code ausgeführt wird.
Re: Sloganmaker in Python
Verfasst: Samstag 8. Dezember 2012, 16:08
von SemperPython
Die graphische Oberfläche habe ich schon gemacht:
Code: Alles auswählen
import random
import tkinter
root = tkinter.Tk()
slogans = ["ist gut fuer die Nerven",
"kann es besser",
" - Vorsicht!Zerbrechlich!",
"der wahre Traum.",
"ist unmoeglich",
" - bleibt immer die Nummer 1.",
"fuer die Rest der Nacht",
"4eva!",
"wuerde fuer alles kaempfen",
"mach dich frisch",
"fuer Vergnuegen und Energie",
"verbindet.",
"ist bei dir innen drin",
"ist unglaublich",
"ist immer frisch",
"ist zueruck",
" - and where is you god now?",
" - Solange der Vorrat reicht",
"drowned too",
"fuer ein lebendigeres Leben",
"- einfach das frischeste",
"rettet deine Nerven",
"Nonstop",
"macht dich besser",
" - eine niemals endende Story",
"geht unter die Haut"
]
def slogans_machen():
word = Textfeld.get()
label["text"] = word, random.choice(slogans)
Textfeld = tkinter.Entry(root)
Textfeld.pack()
button = tkinter.Button(root, text = "Slogan", command=slogans_machen)
button.pack()
label = tkinter.Label(root, text = "")
label.pack()
root.mainloop()
Wie findet ihr ihn?
Re: Sloganmaker in Python
Verfasst: Sonntag 9. Dezember 2012, 16:25
von Leonidas
Zu viel Code der Modul-Global ist. Verpack dass in Funktionen und nutze den ``main()``-Trick den dir /me gerade erklärt hat.