PDA

View Full Version : [Python] Come passare dei parametri ad un mio script?


e-commerce84
13-03-2010, 11:49
Ciao,
ho questo script che esplora un grafo. Lo script di fatto è una funzione che accetta un grafo rappresentato come una lista di liste e dovrebbe restituire il percorso compiuto durante l'esplorazione...ok...

Ora che ho tale funzione...dove e come gli posso passare una lista di liste? In pratica credo che dovrei dichiarare da qualche parte una lista di liste, passarla a tale funzione, mettere il risultato ritornato dalla funzione da qualche parte e stamparlo.
Non conosco Python...al corso di algoritmi ci hanno fornito tale listato...che devo fare per vederlo in funzione?


# ALOGORITMO DI VISITA DI UN GRAFO G:
#
# G è rappresentato per mezzo di una come una lista (indicizzata) di liste di
# adiacenza.
# Per esempio: G = [[1,2,3,4], [0,2], [0,1,4], [0,4], [0,2,3]] è un grafo in cui
# G[0] = [1,2,3,4] è la lista di tutti i nodi vicini al nodo 0 --> Il nodo 0 ha
# come vicini i nodi: 1,2,3,4. Il nodo 1 ha come vicini i nodi: 0,2 e così via.


def visit(G):
n = len(G) # Mette in n il numero di elementi di G (numero nodi del grafo)
A = set() # Insieme dei vicini al nodo corrente che dovranno essere visitati
A.add(0) # Metti il nodo 0 in A, il nodo 0 è stato visitato

# X rappresenta la lista degli n nodi che sono stati già visitati:
# Se X[i] = TRUE, allora l'i-esimo nodo è già stato visitato, se X[i] = FALSE
# significa che l'i-esimo nodo non è ancora stato visitato
X = [False]*n # Inizialmente non è stato visitato nessun nodo

# T è un array di n locazioni, inizialmente ogni locazione è settata al valore
# di default -1
T = [-1]*n

while len(A)>0: # Finchè l'insieme dei nodi A contiene ancora almeno un nodo
u = A.pop() # estrai un nodo da A e mettilo nella variabile u

# Setta a TRUE la u-esima posizione nella lista X dei nodi visitati
X[u] = True

# Per ogni elemento v presente nella u-esima sottolista della lista G ???
for v in G[u]:
if X[v] == False: # Se il nodo in posizione v di X non è stato ancora visitato
T[v] = u # metti il valore di u nella posizione v di T
A.add(v) # Aggiungi il valore v all'insieme A
return T # Ritorna T al chiamante


Grazie

lovaz
13-03-2010, 11:54
Come da commento, prova ad aggiungere in fondo:

G = [[1,2,3,4], [0,2], [0,1,4], [0,4], [0,2,3]]
print visit(G)

e ad eseguirlo con:
python script.py

e-commerce84
13-03-2010, 12:11
Come da commento, prova ad aggiungere in fondo:

G = [[1,2,3,4], [0,2], [0,1,4], [0,4], [0,2,3]]
print visit(G)

e ad eseguirlo con:
python script.py

mmm mi dà il seguente errore facendo come mi dici te:

andrea@andrea-laptop:~/NetBeansProjects/Algoritmi/src$ ls
algoritmi.py visitaGrafo.py
andrea@andrea-laptop:~/NetBeansProjects/Algoritmi/src$ python visitaGrafo.py
File "visitaGrafo.py", line 3
SyntaxError: Non-ASCII character '\xc3' in file visitaGrafo.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

lovaz
13-03-2010, 12:23
E' per via della e accentata

Prova ad aggiungere in testa al file la riga:

# -*- coding: iso-8859-15 -*-

e-commerce84
13-03-2010, 12:35
E' per via della e accentata

Prova ad aggiungere in testa al file la riga:

# -*- coding: iso-8859-15 -*-

Ok...ora gira...grazie...ora tocca capire se il risultato è corretto..

ma la e accentata non la vedo nel mio listato...che c'entra?

lovaz
13-03-2010, 12:40
Come non la vedi, i commenti sono pieni di "è"

e-commerce84
13-03-2010, 12:51
Come non la vedi, i commenti sono pieni di "è"

ecco...pnesavo che i commenti non contassero proprio in quanto commenti...comunque...da quello che vedo lo script gira a cappella...bahhh