Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-06-2013, 19:39   #1
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
[Python] Salvare e rigenerare Alberi

Sono all''ultimo esercizio di Pensare in Python, e non da pochi giorni, siccome mi sa che mi sono impelagato seguendo la strada non esattamente più consigliabile, che tuttavia non riesco a capire perché non funzioni.
Ho questo tipo di TDA:
Codice:
class Albero:
	def __init__(self, Contenuto = None, Sinistra = None, Destra = None):
		self.Contenuto = Contenuto
		self.Sinistra = Sinistra
		self.Destra = Destra

	def __str__(self):
		return str(self.Contenuto)
Devo poter salvare questi Alberi su un file:
Codice:
def SalvaAlbero(Albero, Livello = 0):
	if Albero == None: return
	SalvaAlbero(Albero.Destra, Livello+1)
	if Albero.Destra == None and Albero.Sinistra != None:
		f.write(' '*Livello + ' ' + "\n")
	if Albero.Destra != None and Albero.Sinistra == None:
		f.write(' '*Livello + ' ' + "\n")
	else:
		f.write(' '*Livello + str(Albero.Contenuto))
	if "\n" not in Albero.Contenuto:
		f.write("\n")
	SalvaAlbero(Albero.Sinistra, Livello+1)
E infine, e qui viene la parte dove ho compiuto un errore che ancora non ho individuato, partendo da un file testo devo poter ricreare un Albero:
Codice:
def Componi():
	file = f.readlines()
	i = 0
	while i < len(file):
		stringa = file[i]
		if stringa[0] != " ":
			stringa = stringa[0:len(stringa)-1]
			Radice = Albero(stringa)
			del file[i]
		else:
			i += 1
	Scorri(Radice, file, Spazio = " ")
	return Radice

def Scorri(Radice, file, Spazio = " "):
	if Radice == None: return
	i = 0
	while i < len(file):
		if Spazio in file[i] and Spazio + " " not in file[i]:
			stringa = file[i]
			if Spazio == stringa[0:len(Spazio)]:
				stringa = stringa[0:len(stringa)-1]
				stringa = stringa[0:len(Spazio)].replace(" ", "") + stringa[len(Spazio):len(stringa)]
				Radice.Destra = Albero(stringa)
				del file[i]
				break
			else:
				continue
		if file[i] == Spazio + " ":
			Radice.Destra = None
			break
		else:
			i += 1
	i = 0
	while i < len(file):
		if Spazio in file[i] and Spazio + " " not in file[i]:
			stringa = file[i]
			if Spazio == stringa[0:len(Spazio)]:
				stringa = stringa[0:len(stringa)-1]
				stringa = stringa[0:len(Spazio)].replace(" ", "") + stringa[len(Spazio):len(stringa)]
				Radice.Sinistra = Albero(stringa)
				del file[i]
				break
			else:
				continue
		if file[i] == Spazio + " ":
			Radice.Sinistra = None
			break
		else:
			i += 1
	Scorri(Radice.Destra, file, Spazio + " ")
	Scorri(Radice.Sinistra, file, Spazio + " ")

f = open("/home/meurem/Scrivania/SaveTree", "w")          
Radice = Albero("a", Albero("b", Albero("3", Albero("7"), Albero("9"))), Albero("c", Albero("4", Albero("8")), Albero("6", Albero("12"), Albero("14"))))
SalvaAlbero(Radice)
f.close()
f = open("/home/meurem/Scrivania/SaveTree", "r")
Tree = Componi()
print Tree                    #a
print Tree.Sinistra           #b
print Tree.Destra             #c
print Tree.Sinistra.Sinistra  #3
print Tree.Sinistra.Destra    #None
print Tree.Sinistra.Sinistra.Sinistra #7
print Tree.Sinistra.Sinistra.Destra #9
print Tree.Destra.Destra #6
print Tree.Destra.Destra.Destra # 14
print Tree.Destra.Destra.Sinistra #12
print Tree.Destra.Sinistra #4
print Tree.Destra.Sinistra.Sinistra #8
print Tree.Destra.Sinistra.Destra #None
Al di là del fatto che ho scritto il tutto in modo un po' antiestetico, non riesco a capire come mai non tutti i print restituiscono il corretto valore (che per praticità ho anche scritto come commento a lato):
Codice:
a
b
c
3

None
None
6
14
12
4
8

[Finished in 0.0s]
So che è un po' lunghetto, ma spero riusciate ad aiutarmi perché le ho provate tutte D: Seguendo il programma passo passo, segnandomi ogni variazione di variabile su di un foglio, sembra che il tutto funzioni correttamente, e invece l'IDE mi sfasa alcuni risultati. Chiaramente l'errore è nei miei ragionamenti, non sto dicendo che sia nell'IDE. Ci sono per qualsiasi delucidazioni, visto che forse in certi punti il mio codice potrebbe apparire un po' strano.
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2013, 18:06   #2
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
UP
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
The Social Reckoning: il seguito di The ...
iPhone 16 si trova ora su Amazon a soli ...
Amazon fa a pezzi i prezzi dei monitor g...
Componenti hardware e periferiche PC a p...
Pianeta in crisi: 7 su 9 limiti vitali g...
Galaxy S25 FE con taglio di prezzo di 10...
4 robot aspirapolvere e 3 scope elettric...
Nuovissimi Xiaomi 15T e 15T Pro con tagl...
Le agenzie federali americane potranno u...
Smartphone pieghevoli sempre più ...
LG svela le Easy TV, una nuova gamma di ...
L'equipaggio della missione Shenzhou-20 ...
Possibili detriti spaziali del razzo cin...
Amazon distrugge i prezzi: TV OLED LG, i...
Trump studia dazi fino al 100% per sping...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v