Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Saros 20: il robot preciso e molto sottile
Roborock Saros 20: il robot preciso e molto sottile
Il nuovo robot di Roborock per l'aspirazione della polvere e il lavaggio dei pavimenti spicca per immediatezza d'uso e per l'efficacia dell'azione, grazie anche a un ridotto sviluppo in altezza. Saros 20 integra un motore da ben 36.000Pa di potenza e un sistema di lavaggio a due panni rotanti, con bracci estensibili e un sistema di navigazione molto preciso.
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS e HIFIMAN uniscono le forze per creare ROG Kithara, cuffie gaming con driver magnetici planari da 100mm, design open-back e microfono MEMS full-band. Una proposta che ambisce a coniugare fedeltà per audiofili e performance ludiche, disponibili a 319 euro
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-06-2013, 20: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, 19:06   #2
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
UP
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Microsoft lancia Copilot Tasks: l'IA ade...
HUAWEI svela WATCH GT Runner 2 e la nuov...
Xiaomi vince una causa per diffamazione,...
Ransomware 2025: attacchi +50%, ma solo ...
Samsung Galaxy S26: il nuovo Exynos 2600...
Rivoluzione quantistica a Milano: il tes...
NVIDIA ritira i driver 595.59 per Reside...
UFS 5.0: Kioxia lancia i primi sample, l...
Non è di Apple, NVIDIA o AMD: il ...
PayPal non sarebbe in vendita: indiscrez...
Fiat, Opel e Peugeot con un cuore cinese...
Telegram è diventato il paradiso ...
Leapmotor svela gli interni della B03X p...
World of Warcraft: Midnight debutta in a...
Scrapling, l'arma segreta di OpenClaw: 2...
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:36.


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