Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Find X9 Ultra è lo smartphone che tanti aspettavano, e finalmente è arrivato anche in Italia. Abbiamo provato il flagship di OPPO per diverse settimane, e siamo volati fino in Cina alla sua presentazione ufficiale. Tutto gira intorno al suo incredibile comparto fotografico in collaborazione con Hasselblad e con un totale di sei fotocamere. Il resto è un mix di specifiche di altissimo livello, così come il prezzo. Vi raccontiamo tutto nella nostra recensione completa.
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
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


Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Motorola Edge 60 Neo è il compatto defin...
Stretto di Hormuz, finti funzionari iran...
Dragon Ball Xenoverse 3 annunciato uffic...
WINDTRE BUSINESS potenzia i servizi IoT ...
OPPO rinnova l'ecosistema: arrivano Watc...
OPPO Find X9 Ultra ufficiale: debutta il...
Renault Twingo: esposta a Milano per far...
Intel vuole cambiare: overclocking anche...
Anche PlayStation introduce la verifica ...
Samsung ed Sk hynix, i bonus per gli ope...
Windows 11 velocizza Esplora File: ecco ...
Funzioni nascoste nelle librerie ADLX Ra...
Itala rinasce: lo storico marchio automo...
Huawei Watch Fit 5 e 5 Pro ufficiali: di...
ECOVACS DEEBOT T90 PRO OMNI vs Roborock ...
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: 15:30.


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