Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [python] sviluppo semplice IA

    ciao a tutti! mi sono appena iscritto, mi sembra un forum affidabile da cui poter avere risposte serie e complete dagli utenti premetto che sono anche nel campo della programmazione, ho iniziato da pochissimo e quello che so, l'ho imparato da qualche video e dallo studio del codice di programmi già fatti da altri utenti.
    beh, ecco il mio problema. sto creando una semplice IA la quale, una volta scritta la domanda nell'apposito spazio, essa risponde con una risposta predefinita. sino a quando la testavo senza grafica, tutto andava bene. ma l'altro giorno ho deciso di migliorarla, appunto, con una finestra e dei tasti.
    però sono fermo in un punto.
    vi posto il codice:
    codice:
    #Jhon117 IA By sagara_939 
    
    from __future__ import division
    import wx
    
    
    
    class Jhon117(wx.Frame):
        def __init__(self,id,parent,title):
            wx.Frame.__init__(self,id,parent,title,size=(400,500),style=wx.DEFAULT_MINIFRAME_STYLE)
    
            self.Display=wx.TextCtrl(self,-1,size=(400,80),style=wx.TEXT_ALIGNMENT_RIGHT|wx.TE_READONLY)
            self.Display.SetLabel('')
            self.Scritta=None
    
            self.Displayin=wx.TextCtrl(self,-1,pos=(1,100),size=(400, 35),style=wx.TEXT_ALIGNMENT_RIGHT)  #spazio input
            self.Displayin.SetLabel('')
            self.Scrittain=None
    
            a={} #jhon quellocheso
            file=open("quellocheso.txt", "r")
            for riga in file.readlines():
                  splitted = riga.split('|')
                  a[splitted[0]] = splitted[1]
            file.close() #jhon quellocheso
    
    
            #inizio bottoni e spazi
            
            self.Invio=wx.Button(self,-1,"Invio",pos=(1,200),size=(40,40),style=wx.TEXT_ALIGNMENT_CENTER)
            self.Chiudi=wx.Button(self,-1,"Chiudi",pos=(1,150),size=(100,20),style=wx.TEXT_ALIGNMENT_CENTER)
            
            #fine bottoni
    
    
            self.Invio.Bind(wx.EVT_BUTTON,self.Inv,self.Invio)
            self.Chiudi.Bind(wx.EVT_BUTTON,self.Clo,self.Chiudi)
    
            
            
        def Jhon(self,event):   #inizio jhon
            self.Displayin.SetLabel(self.Display.GetLabel()+b)
            
    
    
        def Clo(self,event):
            self.Destroy()
        def Inv(self,event):
            self.Displayin.SetLabel(self.Displayin.GetLabel())
            
            b=self.Displayin.SetLabel("hfuihefuehfe")
            while b!=self.Displayin.SetLabel(""):
                 b=self.Displayin.SetLabel("")
                 if a.has_key(b):
                      print self.Display.SetLabel(a[b])
                 else:
                     c=self.Displayin.SetLabel
                     a[b]=c
                     d=open("quellocheso.txt","a")
                     d.write("\n")
                     d.write(b)
                     d.write("|")
                     d.write (c)
                     d.close()
                     print self.Display.SetLabel("Grazie!")
    
            self.Scritta=self.Scritta+Jhon(self.Displayin.GetLabel())
            self.Display.SetValue(str(self.Scritta))
            
        
                            
            
    app=wx.PySimpleApp()
    frame=Jhon117(None,-1,'Jhon Grafica Test') 
    frame.Show()
    app.MainLoop()

    a parte le possibili "righe inutili" che sono li momentaneamente ;D, il mio problema si presenta qui:
    codice:
    a={} #jhon quellocheso
            file=open("quellocheso.txt", "r")
            for riga in file.readlines():
                  splitted = riga.split('|')
                  a[splitted[0]] = splitted[1]
            file.close() #jhon quellocheso
    se proverete, quando si avvia il programma da l'errore:
    a[splitted[0]] = splitted[1]
    IndexError: list index out of range


    non riesco proprio a uscirne...

    grazie dell'attenzione

  2. #2
    Probabilmente quell'array è vuoto . Hai provato a vdere se splitta correttamente ?

  3. #3
    Quoto kerbero1984, quell'errore dice che stai usando un indice che non è presente nell'array.
    Prova a stampare le righe del file con una cosa del tipo:
    codice:
    file=open("quellocheso.txt", "r")
    
    for riga in file.readlines():
          print riga
    
    file.close()
    e vedere che cosa ti stampa...

  4. #4
    si l'errore era proprio quello... anche se nel file c'erano 2 voci splittate, era come se fosse vuoto...
    ho usato una vecchia copia dello stesso file (con centinaia di frasi) e adesso funziona correttamente...

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.