Kleiner Chatbot, ich schätze es gibt viel zu vereinfachen

Du hast eine Idee für ein Projekt?
Pythonprog
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2006, 16:41

Donnerstag 19. Januar 2006, 19:17

Hallo,
ich habe einen Chatbot geschrieben(nicht zu hohe Anforderungen stelle, ich bin eher Python Anfänger) Ich wollte mal Fragen, ob es was zu vereinfachen und besser machen gibt, dass euch Profis vielleicht Kopfschmerzen bereitet wenn ihr es seht!

Code: Alles auswählen

import sys
import time
import string
import Tkinter as tk


def Beenden():
    """
    Dies ist die Funktion 
    zum Beenden des Programm
    """ 
    datei.write("Beenden")
        sys.exit(0)

""" Funktion zum Zeichen in String finden """
def neu(Bed, Ant):
    """
    Dies ist die Funktion, 
    die die Bedingung
    prüfen soll
    """
    Frage = eingabe.get()
    index = string.find(Frage, Bed)
    if index > 0:
        textfenster.insert(tk.END, Ant)


def Abschicken():
    """
    Dies ist die Funktion,
    die aufgerufen wird,
    wenn der User mit OK
    bestätigt
    """

    Frage = eingabe.get()
    neu("Hallo", "Morgen")
    neu("Moin", "Hallo")

def main():
    """
    Hauptfunktion
    """
    global eingabe, textfenster
    datei = open("LOG.txt", "a")
    Time = time.asctime()
    root = tk.Tk()
    root.title("Chatbot Version 1.2")
    eingabe = tk.Entry(root, background="yellow")
    eingabe.pack()
    textfenster = tk.Text(root, foreground="blue", font = "arial")
    textfenster.pack()
    OK = tk.Button(root, text = "OK", command = Abschicken)
    OK.pack(side= 'bottom')
    bende = tk.Button(root, text = "Beenden", command = Beenden)
    bende.pack(side= 'bottom')
    root.mainloop()
if __name__ == '__main__': 
    main()

Die Zeit und die Datei Namens LOG werden eigentlich gebraucht aber ich habe sie hier vornevor gelasssen, da sie für das eigentlich eProgramm nicht wichtig sind.

Falls irgendjemand Lust hat es sich anzuschauen, es wäre nett mir verbesserungsvorschläge zu posten.

Edit (Leonidas): Python als Highlighting eingestellt.
Zuletzt geändert von Pythonprog am Dienstag 24. Januar 2006, 17:04, insgesamt 6-mal geändert.
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Donnerstag 19. Januar 2006, 20:02

Allgemein sollte man von:

Code: Alles auswählen

from Tkinter import *
Abstand nehmen und besser:

Code: Alles auswählen

import Tkinter as tk
benutzen.

Eine kleine Diskussion dazu gab es unter:
http://www.python-forum.de/viewtopic.ph ... c&start=30
(recht weit unten, ab BlackJacks Post vom Do Feb 17, 2005 00:57)


Und die Kommentare zu den Funktionen kommen in die Funktion als Docstring.
http://www.python-forum.de/viewtopic.ph ... ight=pydoc

cu Sebastian
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 19. Januar 2006, 20:13

Mr_Snede hat geschrieben:Eine kleine Diskussion dazu gab es unter:
http://www.python-forum.de/viewtopic.ph ... c&start=30
(recht weit unten, ab BlackJacks Post vom Do Feb 17, 2005 00:57)
Also der hier

Ich finde das Programm etwas unübersichtlich, eine main() funktion wäre da sehr nett.. mehr kann ich im Moment nicht sagen, da ich wenig Zeit habe.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Gast

Donnerstag 19. Januar 2006, 20:18

Danke für die ANtworten bis hierher!
Ich möchte noch eines Anmerken:
Es gibt eine Funktion Countdown, die anscheinend nicht gebraucht wird, dies ist nicht so. In der Version mit der Vollständigen Datenbank kann man den Bot nach einem Countdown Fragen und er führt ihn aus.
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Donnerstag 19. Januar 2006, 20:19

@ Leonidas
wo hast du den direkten Link zum Post her?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 19. Januar 2006, 20:55

Mr_Snede hat geschrieben:wo hast du den direkten Link zum Post her?
Neben dem "Verfasst am:"-Text im Header der Posts ist ein kleines Symbol einer Seite (meist weiß, bei ungelesenen Beiträgen orange) und dieses Icon verlinkt direkt auf den Post.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Freitag 20. Januar 2006, 01:16

Dank dir Leonidas, ist mir echt noch nie aufgefallen :shock: .
Pythonprog
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2006, 16:41

Freitag 20. Januar 2006, 20:54

Hallo,
ich möchte auf keinen Fall unhölich klingen aber wäre es vielleicht möglich mir Verbesserungsvorschläge für den Chatbot zu geben?
Danke mal im Voraus
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 20. Januar 2006, 21:21

Setzt doch erstmal die um, die schon genannt wurden... Dann können wir weiter sehen :lol:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Pythonprog
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2006, 16:41

Freitag 20. Januar 2006, 23:33

Das mit den Kommentaren hab ich geändert aber vielleicht ist es dumm von mir oder ich habe etwas übersehen.

Wenn ich folgendes mache:

Code: Alles auswählen

import Tkinter as tk
Dann kriege ich Fehlermeldungen mit Name not Defined.
Wo muss ich den Syntax ändern?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 20. Januar 2006, 23:46

Du must in allen Namen die aus den Namespace Tkinter importiert worden sind ein tk. einfügen: so wird as Tk() ein tk.Tk() und aus Entry() ein tk.Entry() usw.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Pythonprog
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2006, 16:41

Samstag 21. Januar 2006, 01:15

Ich habe den Code oben jetzt entsprechen nach tk. abgeändert, ich hoffe, dass ich noch mehr Vorschläge bekomme.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 21. Januar 2006, 21:20

Du hast das noch nicht angewendet:
Mr_Snede hat geschrieben:Und die Kommentare zu den Funktionen kommen in die Funktion als Docstring.
http://www.python-forum.de/viewtopic.ph ... ight=pydoc
Meinen Tipp eine main()-Funktion zu machen hat dich scheinbar auch kalt gelassen ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Gast

Sonntag 22. Januar 2006, 00:16

UUUPS, das hab ich ganz übersehen, ich werde mich gleich mal ransetzen, Entschuldigung
Pythonprog
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2006, 16:41

Sonntag 22. Januar 2006, 00:39

Ich habe jetzt die Änderunge, so gut wie es im Moment ging durchgeführt, ich hoffe, ich habe das mit der Main Funktion so richtig gemacht ( Es läuft wenigstens )
Antworten