Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [Python] Funzione ordinamento

    Salve, ho queste 3 funzioni:

    codice:
        def nm_line ():
    
            file_ppl=open('docs/ppl/ppl.dat', 'r')
            num=0
            while file_ppl.readline() != '\n':
                file_ppl.readline()
                num=num+1
    
            file_ppl.close()
    
            return num
    
        def sort_f ():
    
            sort_ppl=open('docs/ppl/ppl.dat', 'r')
            k = nm_line()
            while k>=2:
                j=2
                while j<=nm_line():
                    if sort_ppl.readline()>sort_ppl.readline(j):
                        appo=sort_ppl.readline(j)
                        appo_2=sort_ppl.readline()
                        appo_2=sort_ppl.readline(j)
                        appo=sort_ppl.readline()
                    j=j+1
                k=k-1
            sort_ppl.close()
                
            
       
        #legge i dati contenuti nel file    
        def read ():
    
            wr_ppl=open('docs/ppl/ppl.dat', 'r')
            if wr_ppl.read()=='' or wr_ppl.read()=='\n':
                print 'La rubrica e\' vuota.\n'
            else:
                wr_ppl.close() #bisogna chiudere il file per poter portare il puntatore all'inizio
                sort_f()
                wr_ppl=open('docs/ppl/ppl.dat', 'r')
                print (wr_ppl.read())
            wr_ppl.close()
    Quando avvio il programma mi da questo errore:
    Traceback (most recent call last):
    File "D:\Documents and Settings\SiR DanieL\Desktop\Gestionale\RuPyc.py", line 84, in <module>
    cl_ppl.read()
    File "D:\Documents and Settings\SiR DanieL\Desktop\Gestionale\cl_ppl.py", line 85, in read
    sort_f()
    NameError: global name 'sort_f' is not defined
    Dove sbaglio?

    Ho provato anche ad ordinare il file con sort() in questo modo:

    codice:
        #legge i dati contenuti nel file    
        def read ():
    
            wr_ppl=open('docs/ppl/ppl.dat', 'r')
            if wr_ppl.read()=='' or wr_ppl.read()=='\n':
                print 'La rubrica e\' vuota.\n'
            else:
                wr_ppl.close() #bisogna chiudere il file per poter portare il puntatore all'inizio
                wr_ppl=open('docs/ppl/ppl.dat', 'r')
                lista=wr_ppl.readlines()
                lista.sort()
                print (lista)
            wr_ppl.close()
    ma non funziona

  2. #2
    Per prima cosa l'indentazione è sbagliata. Io l'ho corretta e non dà nessuno errore.

    Seconda cosa, la riga:

    codice:
    print 'La rubrica e' vuota.\n'
    sono sbagliati gli apici di delineamento. Devi scriverla cosi:

    codice:
    print "La rubrica e' vuota.\n"

  3. #3
    dove sta sbagliata l'indentazione?

    ma anche a me se avvio solo queste 3 funzioni non mi da errore.
    L'errore me lo da se faccio partire il programma completo che comprende anche altre cose.

  4. #4
    A me risulta sbagliata tra le varie funzioni.

  5. #5
    a me IDLE me la da esatta... bho...

    il problema me lo da solo su sort_f

  6. #6
    A me non dà nessun problema. E se vuoi un coniglio usa un IDE decente. Tipo SPE o PyScripter.

  7. #7
    sicuramente non ti da problemi xkè non hai il resto del programma. eccolo:

    RuPyc.py
    codice:
    #!/usr/bin/python
    # -*- coding: cp1252 -*-
    
    
    
    ############################
    #                          #
    # Author: Nicola Mustone   #
    #      Version: 1.0        #
    #          2009            #
    #                          #
    ############################
    ############################
    #                          #
    #    All right reserved    #
    #                          #
    ############################
    
    
    
    from getpass import getpass
    from sys import exit
    from cl_ppl import *
    
    
    print
    print
    print
    print 'Benvenuto visitatore,'
    print 'per utilizzare la rubrica RuPyc 1.0 inserire nome utente e passoword.'
    print
    
    user=raw_input('Username: ')
    passw=getpass()
    print
    
    #richiede username e password finchè non coincidono con quelli scelti.
    
    log=open('docs/system.dat', 'r')
    while 1:
         if user.lower()=='ciao' and passw=='ciao':
              print 'Benvenuto SiR DanieL,'
              break
         else:
             user=raw_input('Username: ')
             passw=getpass()
             continue
    log.close()
    
    print
    
    while 1:
         
         print 'Cosa vuoi fare?'
         print '1- Inserire una nuova persona nella rubrica.'
         print '2- Leggere la rubrica.'
         print '3- Uscire dal programma.\n'
    
         check=input('Inserisci il numero scelto: ')
         cl_ppl=Ppl()
    
         #carica la funzione di inserimento
         if check==1:
              print
              cl_ppl.ins()
              while 1: #chiede se vuoi continuare ad inserire
                   r_ins=raw_input('Vuoi inserire ancora una persona nella rubrica(s/n): ')
                   if r_ins=='s':
                        cl_ppl.ins()
                        continue
                   else:
                        break
              continue
         #carica la funzione di lettura
         elif check==2:
              print
              cl_ppl.read()
              continue
         #chiude il programma
         else: #verifica se sei sicuro di voler uscire
              YesOrNo=raw_input('Sei sicuro di voler uscire(s/n): ')
              if YesOrNo=='s':
                   exit()
              print
    cl_ppl.py
    codice:
    #!/usr/bin/python
    # -*- coding: cp1252 -*-
    
    class Ppl():
    
        #from cl_fn import *
    
        name=''
        cell=''
        street=''
        email=''
    
        #salva i dati di una persona in un file
        def ins (self):
    
            print 'Inserisci i dati richiesti.'
            print 'I dati contrassegnati da * sono obbligatori\n'
    
            self.name=raw_input('Nome e/o cognome *: ')
            self.cell=raw_input('Telefono *: ')
            self.email=raw_input('Indirizzo e-mail: ')
            self.street=raw_input('Indirizzo: ')
            print
            decision=raw_input('Premi c per confermare oppure x per annullare: ')
            print
            
            if decision=='x':
                del self.name, self.cell, self.street, self.email
            else:
                #Se non inserisco nome e telefono continua a chiedermeli
                while 1:
                    if self.name=='' or self.cell=='':
                        print
                        print 'Inserire nome e numero di telefono.'
                        self.name=raw_input('Nome: ')
                        self.cell=raw_input('Telefono: ')
                        #da implementare: controllo sul numero delle cifre del cellulare == 10!
                        print
                    else:
                        break
                if self.email=='' and self.street=='':
                    self.email='e-mail non inserita'
                    self.street='Indirizzo non inserito'
                elif self.email=='' and self.street!='':
                    self.email='e-mail non inserita'
                elif self.email!='' and self.street=='':
                    self.street='Indirizzo non inserito'
                else:
                    pass
                wr_ppl=open('docs/ppl/ppl.dat', 'a')
                #scrive tutti i dati della persona
                wr_ppl.write(self.name +' - '+self.cell+' - '+self.email+' - '+self.street+'\n')
                wr_ppl.close()
                print 'Dati salvati con successo.'
                print
    
        def nm_line ():
    
            file_ppl=open('docs/ppl/ppl.dat', 'r')
            num=0
            while file_ppl.readline() != '\n':
                file_ppl.readline()
                num=num+1
    
            file_ppl.close()
    
            return num
    
        def sort_f ():
    
            sort_ppl=open('docs/ppl/ppl.dat', 'r')
            k = nm_line()
            while k>=2:
                j=2
                while j<=nm_line():
                    if sort_ppl.readline()>sort_ppl.readline(j):
                        appo=sort_ppl.readline(j)
                        appo_2=sort_ppl.readline()
                        appo_2=sort_ppl.readline(j)
                        appo=sort_ppl.readline()
                    j=j+1
                k=k-1
            sort_ppl.close()
                
            
       
        #legge i dati contenuti nel file    
        def read ():
    
            wr_ppl=open('docs/ppl/ppl.dat', 'r')
            if wr_ppl.read()=='' or wr_ppl.read()=='\n':
                print 'La rubrica e' vuota.\n'
            else:
                wr_ppl.close() #bisogna chiudere il file per poter portare il puntatore all'inizio
                sort_f()
                wr_ppl=open('docs/ppl/ppl.dat', 'r')
                print (wr_ppl.read())
            wr_ppl.close()
    
        #legge i dati contenuti nel file    
        def read (self):
    
            wr_ppl=open('docs/ppl/ppl.dat', 'r')
            if wr_ppl.read()=='' or wr_ppl.read()=='\n':
                print 'La rubrica e\' vuota.\n'
            else:
                wr_ppl.close() #bisogna chiudere il file per poter portare il puntatore all'inizio
                wr_ppl=open('docs/ppl/ppl.dat', 'r')
                print (wr_ppl.read())
            wr_ppl.close()def nm_line ():
    
            file_ppl=open('docs/ppl/ppl.dat', 'r')
            num=0
            while file_ppl.readline() != '\n':
                file_ppl.readline()
                num=num+1
    
            file_ppl.close()
    
            return num
    
        def sort_f ():
    
            sort_ppl=open('docs/ppl/ppl.dat', 'r')
            k = nm_line()
            while k>=2:
                j=2
                while j<=nm_line():
                    if sort_ppl.readline()>sort_ppl.readline(j):
                        appo=sort_ppl.readline(j)
                        appo_2=sort_ppl.readline()
                        appo_2=sort_ppl.readline(j)
                        appo=sort_ppl.readline()
                    j=j+1
                k=k-1
            sort_ppl.close()
                
            
       
        #legge i dati contenuti nel file    
        def read ():
    
            wr_ppl=open('docs/ppl/ppl.dat', 'r')
            if wr_ppl.read()=='' or wr_ppl.read()=='\n':
                print 'La rubrica e' vuota.\n'
            else:
                wr_ppl.close() #bisogna chiudere il file per poter portare il puntatore all'inizio
                sort_f()
                wr_ppl=open('docs/ppl/ppl.dat', 'r')
                print (wr_ppl.read())
            wr_ppl.close()
    Ora se provi a far partire RuPyc.py ti dovrebbe dare errore.

  8. #8
    Originariamente inviato da ~FullSyst3m~
    Per prima cosa l'indentazione è sbagliata. Io l'ho corretta e non dà nessuno errore.

    Seconda cosa, la riga:

    codice:
    print 'La rubrica e' vuota.\n'
    sono sbagliati gli apici di delineamento. Devi scriverla cosi:

    codice:
    print "La rubrica e' vuota.\n"
    Il fatto è che ne codice nei tag CODE del forum il singolo backslash va a farsi benedire.
    codice:
    	print 'La rubrica e\\' vuota.\n'
    Originariamente inviato da ~FullSyst3m~
    A me non dà nessun problema. E se vuoi un coniglio usa un IDE decente. Tipo SPE o PyScripter.
    Quoto, anche il programma completo non da problemi, correggi l'indentazione del codice
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  9. #9
    potete darmi qualke link da cui scaricare gli IDE?
    Io ho trovato un .exe di Pyscripter ma se lo scarico mi viene un file danneggiato e SPE invece scarica il .zip ma non mi apre il file.

  10. #10
    Scarica il setup di PyScripter.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

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.