Notizia:
  • Rilasciata Precise Pangolin 12.04. Per ottenerla, visitate questa pagina, oppure provate il tour dal vivo con un browser web moderno.
  • Nuovo forum di Ubuntu-it, l'annuncio. È consigliato aggiornare il proprio profilo e controllare la sezione Gruppo Forum per problemi noti.
  • Rilasciata la versione italiana di Precise Pangolin 12.04. Per maggiori informazioni, consultare questa discussione.
  • Il vincitore del Concorso desktop del mese di aprile è Jerico. L'elenco dei precedenti vincitori è qui.
  • È uscito il numero 17 della Newsletter italiana di Ubuntu. Lo trovate a questo indirizzo.
  • È uscito il numero 59 di Full Circle Magazine in italiano. Lo trovate a questo indirizzo.

[Risolto] [python]verifica condizione non funzionante

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[Risolto] [python]verifica condizione non funzionante

Messaggioda pandaubuntu » martedì 7 febbraio 2012, 19:54

Codice: Seleziona tutto
class fast():
   def __init__(self):
   self.narg = len(sys.argv) - 1
   self.arg = sys.argv
   self.contatore = 1
   def controll(self):
   contatore = 1
   while 1:
      #esecuzione di altro codice che usa la variabile MA NON LA MODIFICA
           self.contatore = self.contatore + 1
      if not(self.narg > self.contatore):
      break
        return 0

in pratica questa classe mi serve per verificare le operazioni che deve svolgere a seconda dei degli argomenti ricevuti dell'utente, ho dovuto usare un ciclo perché c'é la possibilità che vengano inserite più cose ma non funziona l'incremento di self.contatore e di conseguenza genera un loop infinito sul primo argomento.
Ultima modifica di Anonymous il martedì 7 febbraio 2012, 23:23, modificato 1 volta in totale.
Avatar utente
pandaubuntu
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 441
Iscrizione: luglio 2011

Re: [python]verifica condizione non funzionante

Messaggioda Zoff » martedì 7 febbraio 2012, 20:47

Controlla l'indentazione.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 24443
Iscrizione: ottobre 2007
Località: Romagna!!!
Distribuzione: Ubuntu 12.04
Desktop: Unity e Gnome Shell

Re: [python]verifica condizione non funzionante

Messaggioda pandaubuntu » martedì 7 febbraio 2012, 21:15

Mi ha copiato male l'ndentazione  :) adesso direi che è quella giusta
Avatar utente
pandaubuntu
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 441
Iscrizione: luglio 2011

Re: [python]verifica condizione non funzionante

Messaggioda Zoff » martedì 7 febbraio 2012, 21:17

Se è esattamente quella del file non va ancora bene.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 24443
Iscrizione: ottobre 2007
Località: Romagna!!!
Distribuzione: Ubuntu 12.04
Desktop: Unity e Gnome Shell

Re: [python]verifica condizione non funzionante

Messaggioda pandaubuntu » martedì 7 febbraio 2012, 21:22

cosa ha che non va  ??? ???
Avatar utente
pandaubuntu
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 441
Iscrizione: luglio 2011

Re: [python]verifica condizione non funzionante

Messaggioda Zoff » martedì 7 febbraio 2012, 21:22

O usi i tab o usi gli spazi, non dovresti usare entrambi.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 24443
Iscrizione: ottobre 2007
Località: Romagna!!!
Distribuzione: Ubuntu 12.04
Desktop: Unity e Gnome Shell

Re: [python]verifica condizione non funzionante

Messaggioda pandaubuntu » martedì 7 febbraio 2012, 22:14

Codice: Seleziona tutto
class fast():
   def __init__(self):
      self.narg = len(sys.argv) - 1
      self.arg = sys.argv
      self.contatore = 1
   def controll(self):
      contatore = 1
      while 1:
         #esecuzione funzioni
         self.contatore = self.contatore + 1
         if not(self.narg > self.contatore):
            break
      return 0

ora va bene secondo te, a me và comunque in loop perché non mi incrementa
Ultima modifica di Anonymous il martedì 7 febbraio 2012, 22:23, modificato 1 volta in totale.
Avatar utente
pandaubuntu
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 441
Iscrizione: luglio 2011

Re: [python]verifica condizione non funzionante

Messaggioda Zoff » martedì 7 febbraio 2012, 22:17

A me così funziona.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 24443
Iscrizione: ottobre 2007
Località: Romagna!!!
Distribuzione: Ubuntu 12.04
Desktop: Unity e Gnome Shell

Re: [python]verifica condizione non funzionante

Messaggioda Bakuriu » martedì 7 febbraio 2012, 22:55

pandaubuntu ha scritto:
Codice: Seleziona tutto
class fast():
   def __init__(self):
      self.narg = len(sys.argv) - 1
      self.arg = sys.argv
      self.contatore = 1
   def controll(self):
      contatore = 1
      while 1:
         #esecuzione funzioni
         self.contatore = self.contatore + 1
         if not(self.narg > self.contatore):
            break
      return 0

ora va bene secondo te, a me và comunque in loop perché non mi incrementa


A cosa dovrebbe servire la prima riga? contatore = 1? Il confronto lo fai su self.contatore.

Comunque a mio parere è molto meglio evitare il confronto come lo fai tu... è più complesso da capire.
Fai:
Codice: Seleziona tutto
if self.contatore >= self.narg:
    break


È più chiaro e più efficiente.

Altra piccola cosa: self.contatore = self.contatore + 1 è meglio scritto come self.contatore += 1.
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1017
Iscrizione: ottobre 2009

Re: [python]verifica condizione non funzionante

Messaggioda pandaubuntu » martedì 7 febbraio 2012, 23:21

avevo fatto una boiata nel main, per quello andava in loop, ma il codice và bene
Bakuriu ha scritto:
pandaubuntu ha scritto:
Codice: Seleziona tutto
class fast():
   def __init__(self):
      self.narg = len(sys.argv) - 1
      self.arg = sys.argv
      self.contatore = 1
   def controll(self):
      contatore = 1
      while 1:
         #esecuzione funzioni
         self.contatore = self.contatore + 1
         if not(self.narg > self.contatore):
            break
      return 0

ora va bene secondo te, a me và comunque in loop perché non mi incrementa


A cosa dovrebbe servire la prima riga? contatore = 1? Il confronto lo fai su self.contatore.

Comunque a mio parere è molto meglio evitare il confronto come lo fai tu... è più complesso da capire.
Fai:
Codice: Seleziona tutto
if self.contatore >= self.narg:
    break


È più chiaro e più efficiente.

Altra piccola cosa: self.contatore = self.contatore + 1 è meglio scritto come self.contatore += 1.



Infatti contatore non serviva più e l'ho eliminato.
per il confronto, è necessario usare il ciclo per fare dei vari confronti, sono obbligato a fare un ciclo
per il += grazie della dritta  ;)
Ultima modifica di Anonymous il martedì 7 febbraio 2012, 23:23, modificato 1 volta in totale.
Avatar utente
pandaubuntu
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 441
Iscrizione: luglio 2011

Re: [Risolto] [python]verifica condizione non funzionante

Messaggioda Bakuriu » mercoledì 8 febbraio 2012, 12:13

In realtà il tutto lo puoi scrivere molto più pythonicamente come un ciclo for(così elimini il confronto direttamente):
Codice: Seleziona tutto
for _ in range(1, self.narg+1):
    #esecuzione funzioni


L'unica differenza tra questo for e il while è che il for potrebbe non essere eseguito, nel caso non ci siano argomenti allo script.
(come se il confronto fosse all'inizio del while e non alla fine). Controlla se ti serve davvero l'equivalente del do..while o se ti basta il for come l'ho scritto io.
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1017
Iscrizione: ottobre 2009


Torna a Programmazione

Chi c’è in linea

Visualizzano questa pagina: crap0101, madground e 5 ospiti