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

    [Python] Ripetere operazione

    In python proprio non mi viene ciò che invece sarebbe così facile da fare in C:

    codice:
    cx = raw_input("\nSpecify input file: ")  
      f = open(cx)      
      
      number = f.readline()
      y = int(number)
      res = y / total
    
      if res == 
      <operazioni>
    Io dovrei estendere quest'azione a ogni elemento di un file fatto cosi':

    5
    10
    15
    566
    ...

    Quindi ripetere il secondo blocco di codice (leggi riga, convertila in un dato di tipo intero, processa il dato ottenuto) per ogni numero presente nel file...

    Grassie

  2. #2
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Si vabè avevo già provato a forzarlo con un while, ma non funziona, ottengo quest'errore:

    codice:
    cx = raw_input("\nSpecify input file: ")  
    f = open(cx)      
    
    a=0
    while a<2:
      
      number = f.readline()
      y = int(number)
      res = y / 2
    
      if res == 10:
        print "eh..."
     
      elif res == 5:
        print "uh..."
    codice:
    Specify input file: /tmp/s
    uh...
    Traceback (most recent call last):
      File "html.py", line 10, in ?
        y = int(number)
    ValueError: invalid literal for int():
    Non riesce a reiterare il processo, senza contare che il counter andrebbe impostato a while a =<numeroDelleRighe>

  4. #4
    questo dovrebbe funzionare, inserisci le istruzioni if nel ciclo while.
    python leggendo una linea riporta anche il carattere che la termina (lo \n), devi quindi toglierlo (la funzione cutENDL che ho scritto fa già il cast ad INT, dovrebbe essere a posto).
    per il ciclo while dovrebbe esserci qualcosa di più elegante, ma così funziona.
    codice:
    def cutENDL(string):
        newstring=""
        x=0
        while(x<(len(string)-2)):#-1 per l'index,-1 per il \n
            newstring=newstring+string[x]
        return int(string)
    
    #il tuo programma
    cx = raw_input("\nSpecify input file: ")
    f = open(cx)
    number=f.readline()
    while(number):
        print cutENDL(number)
        number=f.readline()

  5. #5
    Ti ringrazio, ma non ho capito bene comple implementare il tuo codice: ho provato così:

    codice:
    def cutENDL(string):
        newstring=""
        x=0
        while(x<(len(string)-2)):#-1 per l'index,-1 per il \n
            newstring=newstring+string[x]
        return int(string)
    
    #il tuo programma
    cx = raw_input("\nSpecify input file: ")
    f = open(cx)
    number=f.readline()
    while(number):
    
    #   print cutENDL(number)    # se non la commento il prog non va
       number = f.readline()
       y = int(number)
       res = y / 2
       if res == 10:
           print "eh..."
     
       elif res == 5:
           print "uh..."
    Ma il programma spara i risultati apparentemente a caso, e alla fine termina con un errore:

    Il file di prova:
    codice:
    $ cat /tmp/s
    20
    10
    20
    20
    10  # questo non viene conteggiato e genera l'errore
    Il programma eseguito:
    codice:
    uh...
    eh...
    eh...
    uh...
    Traceback (most recent call last):
      File "html.py", line 19, in ?
        y = int(number)
    Come puoi vedere non c'azzecca niente, il risultato doveva essere

    eh...
    uh...
    eh...
    eh...
    uh...


  6. #6
    così funziona
    codice:
    def cutENDL(string):
        newstring=""
        x=0
        while(x<(len(string)-2)):#-1 per l'index,-1 per il \n
            newstring=newstring+string[x]
        return int(string)
    
    cx = raw_input("\nSpecify input file: ")
    f = open(cx)
    number=f.readline()
    while(number):
          y = cutENDL(number)
          res = y / 2
          if res == 10:
         	 print "eh..."
          elif res == 5:
             print "uh..."
          number = f.readline()

  7. #7
    c'è un loop infinito nella funzione, quì è risolto
    codice:
    def cutENDL(string):
        newstring=""
        x=0
        while(x<(len(string)-2)):#-1 per l'index,-1 per il \n
            newstring=newstring+string[x]
            x=x+1
        return int(string)
    
    cx = raw_input("\nSpecify input file: ")
    f = open(cx)
    number=f.readline()
    while(number):
        y = cutENDL(number)
        res = y / 2
        if res == 10:
            print "eh..."
        elif res == 5:
            print "uh..."
        number = f.readline()

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.