Forum >> Principianti >> [risolto] Valore di variabile globale non riconosciuto dalle funzioni

Pagina: 1

Buongiorno e buone feste.
Sono iscritto da un po' al Forum e di solito mi limito a leggervi, ma ora vorrei chiedervi aiuto per risolvere un problema di cui non riesco a venire a capo, malgrado ore di tentativi.
Per testare le conoscenze di Python durante lo studio, scrivo dei piccoli programmi.
Uno in particolare dovrebbe analizzare i testi, usando anche le regex.

Dato un file con testo:

Uno. Due. Tre.

Quattro.


il programma dovrebbe aprirlo e restituire il numero di righe, di capoversi e di periodi.

Il codice è il seguente:

import re

def Avvio():
    global Testo
    Testo = open('Testo.txt', 'r')

def Righe():
   
    global Righe
    global RigheTotale
    Righe = []
    for n in Testo.read().splitlines():
        Righe.append(n)
    RigheTotale = len(Righe)
       
def Capoversi():
   
    global CapoversiTotale
    CapoversiTotale = Righe.count('')

def Periodi():
  
    global PeriodiTotale
    Testo2 = str(Testo.readlines())
    Periodi1 = re.findall(r'[.\$]', Testo2)
    PeriodiTotale = len(Periodi1)

Avvio()
Righe()
Capoversi()
Periodi()

print('RIGHE: ', RigheTotale)
print('CAPOVERSI: ', CapoversiTotale)
print('PERIODI: ', PeriodiTotale)

Righe e Capoversi li conta correttamente (3 e 1), ma per i Periodi restituisce 0.
Se invece antepongo la funzione Periodi() a Righe() e Capoversi(), conta correttamente i 4 Periodi, ma restituisce 0 per Righe e Capoversi.
È come se la chiamata di una funzione relativa alla variabile globale Testo ne modificasse il contenuto, che diventa nullo per le funzioni successive.
Dove sbaglio?
Grazie a chi vorrà aiutarmi.



--- Ultima modifica di Eric Idle in data 2018-12-26 12:59:42 ---

--- Ultima modifica di Eric Idle in data 2018-12-26 13:00:00 ---

--- Ultima modifica di Eric Idle in data 2018-12-26 13:02:32 ---

--- Ultima modifica di Idle in data 2018-12-26 17:52:20 ---
prova con un


Testo.seek(0)
prima di leggere il file la seconda volta.







THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Ti ringrazio del suggerimento: funziona.
Quello che non capisco è perché questo problema si è presentato solo in relazione a una regex, ma non con altri metodi di lettura e analisi del file.
Cercherò di venirne a capo partendo dalla soluzione.
Ciao.









--- Ultima modifica di Idle in data 2018-12-26 17:51:18 ---


Pagina: 1



Esegui il login per scrivere una risposta.