View Full Version : [Python] Problema con Sublime Text 2
Heretic Curse
05-05-2013, 17:56
Siccome fare tutto dal terminale di ubuntu stava diventando un atto di masochismo, dovendo ogni volta che volevo aggiungere una funzione ad una classe doverla riscrivere da capo, ho pensato di passare ad usare Sublime Text.
In parole povere non ho capito come salvare il codice e poterlo poi avviare :D
The_ouroboros
06-05-2013, 08:30
CTRL+s salva e ctrl+p to apre il menu con le opzioni relative al linguaggio che usi oltre alle generiche.
In ogni caso, leggere sempre la documentazione di quello che si usa e nel caso sia carente farlo presente a chi dovrebbe occuparsene :D
Inviato dal mio Sony Xperia P
Heretic Curse
06-05-2013, 16:22
Ho dato un'occhiata alla documentazione, ma non ho trovato ciò che mi serve :( magari ho guardato male boh...
Non credo di essermi spiegato correttamente nel post di ieri, a me serve capire come rendere il mio codice eseguibile. Ho provato a salvare il mio codice come .exe ma mi riporta questo messaggio di errore:
Archive: /home/meurem/Scrivania/untitled.sublime-project.exe
[/home/meurem/Scrivania/untitled.sublime-project.exe]
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
zipinfo: cannot find zipfile directory in one of /home/meurem/Scrivania/untitled.sublime-project.exe or
/home/meurem/Scrivania/untitled.sublime-project.exe.zip, and cannot find /home/meurem/Scrivania/untitled.sublime-project.exe.ZIP, period.
The_ouroboros
06-05-2013, 16:27
wtf?
Eseguibili .exe in linux?
Heretic Curse
06-05-2013, 17:24
wtf?
Eseguibili .exe in linux?
:D ecco dove stava il problema evidentemente :D
quindi come dovrei fare per renderlo eseguibile?
Chiedo già scusa in anticipo se durante il corso del topic me ne uscirò con altre idiozie.
Heretic Curse
07-05-2013, 18:32
Uppo.
Devo proprio capire come rendere il mio codice eseguibile, insomma è fondamentale, ma non riesco a capire come farlo :/
Non ho ancora capito se sei riuscito ad utilizzare Sublime Text oppure no.
No -> Devi scaricare la versione linux. Si tratta di un archivio tar.bz2, lo estrai lanciando da terminale un tar jxf filename.tar.bz2, poi dovresti trovare l'eseguibile.
Si -> Salvi il file con estensione .py e lo lanci da terminale con python nomefile.py. Altrimenti direttamente da ST2 con ctrl+b
Heretic Curse
07-05-2013, 19:48
Non ho ancora capito se sei riuscito ad utilizzare Sublime Text oppure no.
No -> Devi scaricare la versione linux. Si tratta di un archivio tar.bz2, lo estrai lanciando da terminale un tar jxf filename.tar.bz2, poi dovresti trovare l'eseguibile.
Si -> Salvi il file con estensione .py e lo lanci da terminale con python nomefile.py. Altrimenti direttamente da ST2 con ctrl+b
Ok, grazie mille ;)
Heretic Curse
07-05-2013, 20:06
Ok, perdonate se rompo ancora :(
questo è il codice che ho scritto come esercizio:
import random
class Carta:
ListaSemi = ["Fiori", "Picche", "Quadri", "Cuori"]
ListaRanghi = ["impossibile", "Asso", "2", "3", "4", "5", "6", \
"7", "8", "9", "10", "Jack", "Queen", "King"]
def __init__(self, Rango = 0, Seme = 0):
self.Rango = Rango
self.Seme = Seme
def __str__(self):
return str(self.ListaRanghi[self.Rango]) + " di " + str(self.ListaSemi[self.Seme])
def __cmp__(self, Altro):
if self.Seme > Altro.Seme: return 1
if self.Seme < Altro.Seme: return -1
if self.Rango == 1 and self.Rango != Altro.Rango: return 1
if self.Rango > Altro.Rango: return 1
if self.Rango < Altro.Rango: return -1
class Mazzo:
def __init__(self):
self.Carte = []
for Seme in range(4):
for Rango in range(1, 13):
self.Carte.append(Carta(Rango, Seme))
def __str__(self):
s = ""
for i in range(len(self.Carte)):
s = s + " "*i + str(self.Carte[i]) + "\n"
return s
def Mescola(self):
NumCarte = len(self.Carte)
for i in range(NumCarte):
j = random.randrange(i, NumCarte)
self.Carte[i] = self.Carte[j]
def RimuoviCarte(self, Carta):
if Carta in self.Carte:
self.Carte.remove(Carta)
return 1
else:
return 0
def PrimaCarta(self):
return self.Carte.pop()
def EVuoto(self):
return (len(self.Carte) == 0)
Z = Mazzo()
Z.Mescola()
Z.PrimaCarta()
print Z
faccio ctrl + b e il compilatore mi restituisce questo:
<__main__.Mazzo instance at 0x7f36fa461e60>
[Finished in 0.0s]
Com'è che non vengono effettuate le ultime 3-4 (non so come avere la certezza che quell'esadecimale indichi Z) righe? Ovvero, come dovrei fare per far si che mi vengano stampate sullo schermo le carte del mazzo?
cdimauro
08-05-2013, 07:25
E' molto strano, perché il codice sembra a posto, e dovrebbe essere richiamato correttamente il metodo __str__ di Mazzo.
Prova a lanciare lo script da terminale, come ti è stato suggerito.
Heretic Curse
08-05-2013, 13:55
meurem@ubuntu:~$ python mazzo.py
python: can't open file 'mazzo.py': [Errno 2] No such file or directory
Ho provato, ma nulla. Il nome del file è corretto, e si trova sulla scrivania. Devo forse specificare in qualche modo la sua ubicazione?
The_ouroboros
08-05-2013, 13:59
quella è una posizione relativa e se non sei nel path esatto non funzica.
Prova la path assoluta e datti una letta alle basi di linux :)
Heretic Curse
09-05-2013, 05:30
quella è una posizione relativa e se non sei nel path esatto non funzica.
Prova la path assoluta e datti una letta alle basi di linux :)
In effetti ne ho bisogno :)
Comunque:
meurem@ubuntu:~$ python /home/meurem/Scrivania/mazzo.py
<__main__.Mazzo instance at 0x7f3a6df76e60>
Proprio come su Sublime Text. Perché diavolo non mi stampa il mazzo? D:
So già che lo troverai difficile, ma io proverei a debuggare... :p
wingman87
09-05-2013, 10:40
Il problema è che __str__ non è indentato allo stesso livello di __init__ (risulta definito all'interno di __init__)
Il problema è che __str__ non è indentato allo stesso livello di __init__ (risulta definito all'interno di __init__)
LOL è vero :asd:
Heretic Curse
09-05-2013, 15:08
E' vero :D ora funziona, ti ringrazio infinitamente :)
cdimauro
09-05-2013, 15:36
Il problema è che __str__ non è indentato allo stesso livello di __init__ (risulta definito all'interno di __init__)
Maledizione. Con un solo spazio d'indentazione non me ne sono proprio accorto. :muro:
The_ouroboros
09-05-2013, 15:37
Maledizione. Con un solo spazio d'indentazione non me ne sono proprio accorto. :muro:
a chi lo dici:D
Maledizione. Con un solo spazio d'indentazione non me ne sono proprio accorto. :muro:
Ah dannato Python :asd:
Fosse stato Java manco si presentava il problema :sofico:
Ah dannato Python :asd:
Fosse stato Java manco si presentava il problema :sofico:
Magari !
if ( foo() && bar() )
something();
somethingElse();
blablabla();
Tipico errore che capita quando uno aggiunge una riga ad una condizione di una sola riga.
(Si', un buon editor ti indenta automaticamente e te ne accorgi, ma lo stesso vale per il codice in python piu' sopra).
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.