View Full Version : Python If Annidati
Hardcore
10th November 2011, 18:52
Sarò scemo ma non capisco perchè non riesco a scrivere in Python una cosa che in C è semplicissima, cioè questo:
int a=2;
int b=3;
if (a==2){
if (b==4){
cout << "B vale 4" << endl;
}
cout << "Prova Prova";
}
Hador
10th November 2011, 18:57
non devi tabbare un sacco? :D
Rise-the-Sky
10th November 2011, 19:00
Lo sai vero che python usa(va ...sono fermo a 2 anni fa ma presumo non sia cambiata questa caratteristica) le indentazioni e non le graffe per dividere i blocchi di codice?
Se scrivi tutto senza indentare le condizionate non funzioneranno.
Hardcore
10th November 2011, 19:33
si lo so infatti quello è codice c++ ......
non devi tabbare un sacco? :D
Che vuol dire?
Eltarion
10th November 2011, 19:44
tabbare = indentarte
per il resto dovrebbe essere così:
if a == 2:
if b == 4:
print "B vale 4"
else:
print "Prova Prova"
dovrebbe essere una cosa del genere
Hardcore
10th November 2011, 20:53
Io voglio che quando termina il codice dell if b torni a eseguire il codice restante di if a
Cifra
10th November 2011, 21:16
ma mettilo prima della if=b
Hardcore
11th November 2011, 01:55
Molte volte mi capita di dover fare cose simili...quindi chiedevo
Bers
11th November 2011, 02:00
in python invece delle parentesi usi i tab... cose con la stessa indentazione fanno parte delle stesse parentesi per capirci
Eltarion
11th November 2011, 11:52
Io voglio che quando termina il codice dell if b torni a eseguire il codice restante di if a
si avevo capito l'esigenza. il codice che ti ho postato fa esattamente quello che dici.
Hardcore
11th November 2011, 13:02
Secondo me no.
Entra nell if b, e quando esce non esegue quello nell'else, ma lo salta.
Faccio esempio del programma
nome=raw_input('Inserisci il nome :')
età=input=('Inserisci la tua età :')
if (len(nome)>0):
print "Nome Inserito :",nome
if (età > 20) print "Hey hai più di 20 anni"
print "Caro %s di %d anni il programma è terminato" % (nome,età)
Allora mostro i due casi per essere chiaro
Caso 1:
Nome=Pippo
Età 18
Output a Console:
Nome Inserito : Pippo
Caro Pippo di 18 anni il programa è terminato
Caso 2:
Nome: Topolino
Età: 35
Nome Inserito: Topolino
Hey hai piu di 20 anni
Caro Topolino di 20 anni il programma è terminato
Mez
11th November 2011, 13:21
a = 2
b = 3
if a == 2 and b ==3:
print 'a vale 2 e b vale 3'
else:
print 'nulla'
@hardcore: è consigliabile usare raw_input in qualsiasi caso indipendentemente dal tipo (stringa o intero)
nome=str(raw_input('nome: '))
eta=int(raw_input('eta: '))
Hardcore
11th November 2011, 13:30
Non ho capito il primo codice che hai messo.
Mez
11th November 2011, 13:38
Non ho capito il primo codice che hai messo.
si scusa ho scazzato con le variabili, pardon
Hardcore
11th November 2011, 13:49
Ok, però non fa quello che penso io, l'idea è
A Vale 2? SI
Entro nel blocco
<eseguo del codice per tutti i casi in cui a vale 2>
Dentro a questo blocco caso particolare <b vale 3?> Si eseguo anche questo particolare codice
Esco da b
continuo a eseguire del codice dell if A
Quello scritto da te se a o b valgono quello esegue tutto quel codice, non un codice limitato solo ad b=3 nel caso a =2.
Ovviamente potrei fare
if a==2 and b==3 : <blocco A>+<blocco B>
ma poi avrei anche un
if a==2 and b!=3: <blocco A>
cioè del codice scritto piu volte che mi sembra una cosa un pò inutile. Oh magari sta cosa in python non si può fare e basta
Mez
11th November 2011, 13:51
Non ho capito il primo codice che hai messo.
si scusa ho scazzato con le variabili, pardon.
Comunque se è per imparare i cicli if/elif/else
domanda = str(raw_input("Che lingua ti piace di piu? Inglese o Italiano? "))
if domanda == 'inglese' or domanda == 'Inglese':
print 'bene! parli inglese'
elif domanda == 'italiano' or domanda == 'Italiano':
print 'bene! Parli italiano'
else:
print 'Rispondi alla domanda'
Tutto a base di indentazione python
funziona cosi quel che dici tu
if expression:
statement(s)
else:
statement(s)
puoi fare una funzione con il blocco di codice, successivamente la richiami nel ciclo if quando la condizione è vera
in questo caso la variabile che contiene il valore 2 è una variabile Globale. Da richiamare dentro la funzione
if tizio == caio:
qui parti con la funzione()
Bers
11th November 2011, 13:55
Ok, però non fa quello che penso io, l'idea è
A Vale 2? SI
Entro nel blocco
<eseguo del codice per tutti i casi in cui a vale 2>
Dentro a questo blocco caso particolare <b vale 3?> Si eseguo anche questo particolare codice
Esco da b
continuo a eseguire del codice dell if A
Quello scritto da te se a o b valgono quello esegue tutto quel codice, non un codice limitato solo ad b=3 nel caso a =2.
Ovviamente potrei fare
if a==2 and b==3 : <blocco A>+<blocco B>
ma poi avrei anche un
if a==2 and b!=3: <blocco A>
cioè del codice scritto piu volte che mi sembra una cosa un pò inutile. Oh magari sta cosa in python non si può fare e basta
basta che torni in dentro di un indentazione... python è un linguaggio bellissimo e amerai non usare più le parentesi :nod:
if a==2:
if b==3:
<codice di b==3 e a==2>
<codice di b!=3 e a ==2>
<codice di a != 2>
Eltarion
11th November 2011, 15:44
basta che torni in dentro di un indentazione... python è un linguaggio bellissimo e amerai non usare più le parentesi :nod:
if a==2:
if b==3:
<codice di b==3 e a==2>
<codice di b!=3 e a ==2>
<codice di a != 2>
non è appunto quello che ho scritto io? comunque non usare le parentesi per distinguere i blocchi è davvero merda merda merda
Hardcore
11th November 2011, 15:50
ok ma come fa a capire che finisce la parte di <codice di b==3 e a==2> in C sono abbituato con le { }
Eltarion
11th November 2011, 16:00
ok ma come fa a capire che finisce la parte di <codice di b==3 e a==2> in C sono abbituato con le { }
con l'identazione per dioooooooo. te lo siamo ripetendo a raffica lol :sneer:
Hardcore
11th November 2011, 16:04
Bene ho risolto, Non si può fare e basta.Devo usare ste dannate sequenze di if eleif ed else.
Eltarion
11th November 2011, 16:17
si che si può fare zio pera
The Nested if...elif...else Construct
There may be a situation when you want to check for another condition after a condition resolves to true. In such a situation, you can use the nested if construct.
In a nested if construct, you can have an if...elif...else construct inside another if...elif...else construct.
The syntax of the nested if...elif...else construct may be:
if expression1:
statement(s)
if expression2:
statement(s)
elif expression3:
statement(s)
else
statement(s)
elif expression4:
statement(s)
else:
statement(s)
link --> http://www.tutorialspoint.com/python/python_if_else.htm
Hardcore
11th November 2011, 17:04
Ok ci son saltato fuori, praticamente, cosa non presente in C conta come si scrive il codice dal punto di vista grafico e come le cose sono allineate.
Grazie a tutti per la pazienza, so di essere un testone :)
Eltarion
11th November 2011, 17:05
Ok ci son saltato fuori, praticamente, cosa non presente in C conta come si scrive il codice dal punto di vista grafico e come le cose sono allineate.
Grazie a tutti per la pazienza, so di essere un testone :)
:clap: :clap: :clap: :D
Kat
11th November 2011, 19:29
Ok ci son saltato fuori, praticamente, cosa non presente in C conta come si scrive il codice dal punto di vista grafico e come le cose sono allineate.
Altrimenti detta indentazione, come ti han ripetuto 30 volte :D
Dr.Doomed
11th November 2011, 20:16
Altrimenti detta indentazione, come ti han ripetuto 30 volte :D
Vabbe`, dai, no problem, son cose che capitano: ora si tratta solo di disdire quell'appuntamento dal dentista richiesto sull'onda del fraintendimento e la faccenda e` chiusa al meglio. ;)
Hardcore
12th November 2011, 13:26
In ogni caso credo che questa sia la cosa piu idiota che abbia mai visto.
Scrivevo il codice di prova con VI che andava a capo in automatico e quindi non veniva niente.
Ho messo eclipse e allinea le cose lui.
A mio parere è la cosa piu stupida che si possa fare non avere dei caratteri di inizio o fine blocco.
Dr.Doomed
12th November 2011, 15:53
In ogni caso credo che questa sia la cosa piu idiota che abbia mai visto.
Scrivevo il codice di prova con VI che andava a capo in automatico e quindi non veniva niente.
Ho messo eclipse e allinea le cose lui.
A mio parere è la cosa piu stupida che si possa fare non avere dei caratteri di inizio o fine blocco.
Python e` stato concepito anche in modo da imporre la leggibilita` del codice ed uniformarla: troppo spesso accade che ognuno applichi la propria formattazione (o non ne applichi proprio una) e il codice diventi un blob.
Demandare tutto all'IDE puo` semplificare la vita, ma non e` detto che quello che vedi in eclipse sia necessariamente lo stesso che vedi in netbeans o vi. Python lo impone.
E` una questione di filosofia di programmazione: se vuoi vedere la cosa portata all'estremo, butta un occhio sui linguaggi di porgrammazione esoterici ( Brainfuck e Whitespace, per dirne un paio).
Bers
13th November 2011, 21:51
a me python piace una cifra... si vede subito il codice di un blocco rispetto agli altri!
San Vegeta
14th November 2011, 01:08
hardcore, senza offesa, ma se non riesci a scrivere 2 if annidati in un qualunque linguaggio, devi prendere una guida di sintassi di quel linguaggio e studiartelo.
i linguaggi, coi costrutti base, hanno più o meno tutti le stesse caratteristiche... si suppone che switchare da uno all'altro sia una banalità...
cmq nel tuo caso in python è
a=2
b=3
if (a==2);
_if (b==4): #uno spazio
__print "B vale 4" #due spazi
_print "Prova Prova" #uno spazio
In ogni caso credo che questa sia la cosa piu idiota che abbia mai visto.
Scrivevo il codice di prova con VI che andava a capo in automatico e quindi non veniva niente.
Ho messo eclipse e allinea le cose lui.
A mio parere è la cosa piu stupida che si possa fare non avere dei caratteri di inizio o fine blocco.
io uso vi e non ho questi problemi -.-'
Hardcore
14th November 2011, 02:19
Mi mancava il pro player della situazione...Forsr ignori che i compilatori C Java se ne fregano dell aspetto o degli spazi. quindi tabbare è sempre stato un mero vezzo estetico. cosa che qui non è.
Axet
14th November 2011, 03:31
La leggibilità del codice non è un mero vezzo estetico, così come non lo sono i commenti.
Sto 3d è epico :sneer:
Hador
14th November 2011, 10:17
cavolo che merda il python! molto meglio il c con vi!
:sneer:
Hardcore
14th November 2011, 11:19
La leggibilità del codice non è un mero vezzo estetico, così come non lo sono i commenti.
Sto 3d è epico :sneer:
Mi convinco giorno dopo giorno che tu abbia dei difetti di comprensione dell'italiano.
Evidentemente non comprendi la differenza tra Estetica e Funzionalità.
Vediamo se ti è piu chiaro.
In C++ / C scrivere:
if (a==b){ for(int i=0;i<=a;i++) for (j=0;j<=b;j++) x=i;y=j; cout << vector[x][y] << endl; cout << "Prova Prova"; }
Funziona diversamente da:
if (a==b){
for(int i=0;i<=a;i++)
for(int j=0;j<=b;i++)
x=i;
y=j;
cout << vector[x][y] << endl;
cout << "Prova Prova";
}
La Risposta è NO. Ergo l'estetica in C/Java/C++ si segue solo ed esclusivamente per rendere il codice leggibile, python ti obbliga a torto/ragione invece ad avere un codice esteticamente piacevole.
Mi sembra che facciate i pro player per una questione che non esiste.
Vuoi scrivere codice bello, fai pure. Io ho pagine di codice ottimizzato al cui interno vi sono sberle di SSE2, e segmenti __asm, e non è certo piacevole esteticamente.
Sinceramente ritengo che scrivere del codice leggibile sia obbligatorio o comunque necessario per permettere successive modifiche o permettere a estranei di leggere il codice, ma questa è un regola di "educazione", non una regola dettata dal linguaggio o dal compilatore.
Ma sicuramente sei migliore di me e sinceramente non me ne può fregar di meno.
Axet
14th November 2011, 11:31
Vabbè rigira la frittata come vuoi, il senso tanto è chiaro a tutti.
La cosa fun è che insisti ancora dopo una figura a dir poco barbina, gg :sneer:
Hardcore
14th November 2011, 11:33
Sicuramente Axet, guarda io ho scritto questo:
Mi mancava il pro player della situazione...Forsr ignori che i compilatori C Java se ne fregano dell aspetto o degli spazi. quindi tabbare è sempre stato un mero vezzo estetico. cosa che qui non è.
Ed è alquanto chiaro, ma evidentemente sei molto bravo a scrivere codice e poco a leggere un libro, punti di vista :)
A dimostrarti ancor, come se non si fosse già capito, che l'estetica != funzionalità. Il codice di seguito, è l'inverso della radice quadrata, scritto da Carmack per Quake 3 Arena, operazione che va come un treno, sicuramente molto leggibile....
float Q_rsqrt (float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
// evil floating point bit level hacking [sic]
i = * ( long * ) &y;
// what the fuck? [sic]
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
// 1st iteration
y = y * ( threehalfs - ( x2 * y * y ) );
return y;
}
Arrogante come sei dirai che non è vero. Link : http://en.wikipedia.org/wiki/Fast_inverse_square_root
Ora tornatene a spingere l'alfa nella notte.
Axet
14th November 2011, 11:50
Sicuramente Axet, guarda io ho scritto questo:
Ed è alquanto chiaro, ma evidentemente sei molto bravo a scrivere codice e poco a leggere un libro, punti di vista :)
A dimostrarti ancor, come se non si fosse già capito, che l'estetica != funzionalità. Il codice di seguito, è l'inverso della radice quadrata, scritto da Carmack per Quake 3 Arena, operazione che va come un treno, sicuramente molto leggibile....
float Q_rsqrt (float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
// evil floating point bit level hacking [sic]
i = * ( long * ) &y;
// what the fuck? [sic]
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
// 1st iteration
y = y * ( threehalfs - ( x2 * y * y ) );
return y;
}
Arrogante come sei dirai che non è vero. Link : http://en.wikipedia.org/wiki/Fast_inverse_square_root
Ora tornatene a spingere l'alfa nella notte.
Ma che minchia di senso ha sto reply? :rotfl: :rotfl: :rotfl: :rotfl:
Oltretutto il codice alla pagina che wiki che hai linkato è indentato correttamente, ti sei perso la formattazione con il copia-incolla :rotfl: :rotfl: :rotfl: :rotfl:
Oh cmq contento te, scrivi pure il codice come un babbuino senza spazi, indentazioni (giusto non sai che sono :sneer:) e commenti. Però hai le parentesi che delimitano i blocchi di codice, eh!
Sei sicuro che ti stai per laureare in informatica e non in veterinaria?
Hardcore
14th November 2011, 11:55
Ma che minchia di senso ha sto reply? :rotfl: :rotfl: :rotfl: :rotfl:
Oltretutto il codice alla pagina che wiki che hai linkato è indentato correttamente, ti sei perso la formattazione con il copia-incolla :rotfl: :rotfl: :rotfl: :rotfl:
Oh cmq contento te, scrivi pure il codice come un babbuino senza spazi, indentazioni (giusto non sai che sono :sneer:) e commenti. Però hai le parentesi che delimitano i blocchi di codice, eh!
Sei sicuro che ti stai per laureare in informatica e non in veterinaria?
Mi spiace Axet, riprova :)
Sinceramente ritengo che scrivere del codice leggibile sia obbligatorio o comunque necessario per permettere successive modifiche o permettere a estranei di leggere il codice, ma questa è un regola di "educazione", non una regola dettata dal linguaggio o dal compilatore.. L'argomento è: Scrivere codice estetico o no cambia l'effetto su un compilatore C?. Ma tu as usual devi passare sul piano personale che non centra niente, non avendo mai visto del codice scritto da me.
Ti consiglio un buon libro, potresti imparare a comprendere l'italiano. :)
Mi stupisco del fatto che essendo tu un genio dell'informatica ignori cosa sia quel codice. Ma forse io da povero agrario ti insegnerò una cosa. Un codice non è leggibile solo perchè è tabbato, ma anche perchè si capisce cosa fa.
Carmack dovette spiegare perchè usava quei numeri e cosa diavolo faceva, perchè pur essendo identato nessuno ci aveva capito na mazza.
Axet
14th November 2011, 12:00
Cristo santo :rotfl:
Dr.Doomed
14th November 2011, 12:19
Sicuramente Axet, guarda io ho scritto questo:
Ed è alquanto chiaro, ma evidentemente sei molto bravo a scrivere codice e poco a leggere un libro, punti di vista :)
A dimostrarti ancor, come se non si fosse già capito, che l'estetica != funzionalità. Il codice di seguito, è l'inverso della radice quadrata, scritto da Carmack per Quake 3 Arena, operazione che va come un treno, sicuramente molto leggibile....
float Q_rsqrt (float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
// evil floating point bit level hacking [sic]
i = * ( long * ) &y;
// what the fuck? [sic]
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
// 1st iteration
y = y * ( threehalfs - ( x2 * y * y ) );
return y;
}
Arrogante come sei dirai che non è vero. Link : http://en.wikipedia.org/wiki/Fast_inverse_square_root
Ora tornatene a spingere l'alfa nella notte.
Scusa, che intendi con funzionalita`? Maggiore velocita`? Non mi risulta che se nel listato metti spazi, tabulazioni e commenti l'eseguibile poi e` piu` lento... Il compilatore ci passa sopra con signorilita`. O almeno dovrebbe.
Quel codice e` piu` efficiente perche` per la combinazione di istruzioni (oltre che per alcune istruzioni nello specifico), non per come e` scritto.
Sia chiaro, uno puo` scrivere il codice come cazzo gli pare, purche funzioni. Ma visto che uno dei trend che piu` si e` affermato negli ultimi decenni e` quello della riutilizzabilita` del codice, chi poi ci dovra`ravanare in quel codice potrebbe apprezzare avere il tutto indentato e ordinato a dovere. In generale, noi umani ci troviamo piu` comodi cosi`.
Poi se a te danno fastidio fronzoli come indentazione e leggibilita`, non capisco perche` perda tempo con linguaggi ad alto livello invece che dedicarti alla scrittura direttamente in codice macchina.
Hardcore
14th November 2011, 12:32
Scusa, che intendi con funzionalita`? Maggiore velocita`? Non mi risulta che se nel listato metti spazi, tabulazioni e commenti l'eseguibile poi e` piu` lento... Il compilatore ci passa sopra con signorilita`. O almeno dovrebbe.
Quel codice e` piu` efficiente perche` per la combinazione di istruzioni (oltre che per alcune istruzioni nello specifico), non per come e` scritto.
Poi se a te danno fastidio fronzoli come indentazione e leggibilita`, non capisco perche` perda tempo con linguaggi ad alto livello invece che dedicarti alla scrittura direttamente in codice macchina.
E' quello che sto cercando di dire, in C estetica non vuol dire funzionalità, non cambia assolutamente niente. Puoi tabbare o no, per rendere il codice leggibile, non hai aumenti di prestazioni.
Ma poi dove avrei detto che mi da fastidio la tabulazione o avere un codice leggibile, ho pure scritto che dovrebbe essere obbligatorio scrivere codice leggibile.
Per dovere di cronaca il codice di Carmack era veloce, quasi a livello di un SIMD, grazie a quel famoso Evil Number, che gli permetteva di approssimare la rsqrt. Non ha mai spiegato come l'abbia trovato o chi effettivamente l'abbia scoperto.
Arcotemo
14th November 2011, 12:46
Sicuramente Axet, guarda io ho scritto questo:
Ed è alquanto chiaro, ma evidentemente sei molto bravo a scrivere codice e poco a leggere un libro, punti di vista :)
A dimostrarti ancor, come se non si fosse già capito, che l'estetica != funzionalità. Il codice di seguito, è l'inverso della radice quadrata, scritto da Carmack per Quake 3 Arena, operazione che va come un treno, sicuramente molto leggibile....
float Q_rsqrt (float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
// evil floating point bit level hacking [sic]
i = * ( long * ) &y;
// what the fuck? [sic]
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
// 1st iteration
y = y * ( threehalfs - ( x2 * y * y ) );
return y;
}
Arrogante come sei dirai che non è vero. Link : http://en.wikipedia.org/wiki/Fast_inverse_square_root
Ora tornatene a spingere l'alfa nella notte.
se guardi bene wikipedia (non il tuo paste) vedrai che gli statement sono indentati per far capire che sei all'interno della funzione Q_rsqrt.
Quindi occhio che è proprio il contrario di quello che affermi
Hardcore
14th November 2011, 12:52
se guardi bene wikipedia (non il tuo paste) vedrai che gli statement sono indentati per far capire che sei all'interno della funzione Q_rsqrt.
Quindi occhio che è proprio il contrario di quello che affermi
Il senso di quel codice perke l'ho messo non è: TABBI = CODICE LEGGIBILE, puoi anche tabbare quanto vuoi ma di quel codice non si capì nulla fino a che in una conferenza non venne spiegato.
Cioè ora posso scrivere blocchi assembler, ma se l'idento è tutto comprensibile. E' un ragionamento un po del cavolo.
Il codice non è leggibile solo perchè tabbato, ma anche perchè si riesce a comprendere semplicemente cosa fa, grazie a commenti, ecc. Spesso inoltre scrivere del codice leggibile (che ripeto non è solo l'identazione....) comporta dall'altro cali prestazionali.
Arcotemo
14th November 2011, 12:55
ah ok.
Cmq l'indentazione serve per far capire il flusso del programma non il suo funzionamento
Hardcore
14th November 2011, 13:00
ah ok.
Cmq l'indentazione serve per far capire il flusso del programma non il suo funzionamento
Esatto, a me pareva abbastanza chiaro che identare = aiutare una persona che legge il codice. Cosi come molti altri approcci nella codifica servono per rendere il codice comprensibile. Tutto il mio discorso era, mentre in C uso l'identazione per un utente, in python devo usarla anche riferito al compilatore. Ma i pro player non san leggere a quanto pare.
Dr.Doomed
14th November 2011, 13:06
E' quello che sto cercando di dire, in C estetica non vuol dire funzionalità, non cambia assolutamente niente. Puoi tabbare o no, per rendere il codice leggibile, non hai aumenti di prestazioni.
Ma poi dove avrei detto che mi da fastidio la tabulazione o avere un codice leggibile, ho pure scritto che dovrebbe essere obbligatorio scrivere codice leggibile.
Per dovere di cronaca il codice di Carmack era veloce, quasi a livello di un SIMD, grazie a quel famoso Evil Number, che gli permetteva di approssimare la rsqrt. Non ha mai spiegato come l'abbia trovato o chi effettivamente l'abbia scoperto.
Hai portato tu la questione su di un altro piano: dalla leggibilita` alla comprensibilita` del codice. Alla prima contribuisce grandemente l'uso logico delle tabulazioni, alla seconda un adeguato uso dei commenti. Il fatto che Carmack pisci sopra all'uso dei commenti e` una sua decisione personale, sta di fatto che poi e` dovuto andare a spiegare a voce a tutti, piu` o meno, il perche` di quella formula. Avesse commentato meglio il codice poteva spiegarlo una volta e basta.
Cio` non inficia la qualita` del codice, chiaro, purche` l'algoritmo sia corretto, o meglio, purche` approssimi in modo tollerabile per quanto si vuole fare il comportamento desiderato.
Dr.Doomed
14th November 2011, 13:12
Esatto, a me pareva abbastanza chiaro che identare = aiutare una persona che legge il codice. Cosi come molti altri approcci nella codifica servono per rendere il codice comprensibile. Tutto il mio discorso era, mentre in C uso l'identazione per un utente, in python devo usarla anche riferito al compilatore. Ma i pro player non san leggere a quanto pare.
Tab e graffe sempre un carattere sono: e` come stare a disquisire sul fatto che valga di piu` un euro tedesco o un euro francese.
Circa fare una crociata per il diritto a scrivere codice di difficile lettura, liberissimo di farlo, ma non aspettarti approvazione globale e grande seguito.
Hardcore
14th November 2011, 13:35
Tab e graffe sempre un carattere sono: e` come stare a disquisire sul fatto che valga di piu` un euro tedesco o un euro francese.
Circa fare una crociata per il diritto a scrivere codice di difficile lettura, liberissimo di farlo, ma non aspettarti approvazione globale e grande seguito.
Sei per caso Axet? No perchè io non ho mai detto niente di tutto questo.
. Ergo l'estetica in C/Java/C++ si segue solo ed esclusivamente per rendere il codice leggibile, python ti obbliga a torto/ragione invece ad avere un codice esteticamente piacevole.
Mi sembra che facciate i pro player per una questione che non esiste.
Vuoi scrivere codice bello, fai pure. Io ho pagine di codice ottimizzato al cui interno vi sono sberle di SSE2, e segmenti __asm, e non è certo piacevole esteticamente.
Sinceramente ritengo che scrivere del codice leggibile sia obbligatorio o comunque necessario per permettere successive modifiche o permettere a estranei di leggere il codice, ma questa è un regola di "educazione", non una regola dettata dal linguaggio o dal compilatore.
Dove direi che bisogna scrivere codice illeggibile? Lo vedi solo tu.
Ripeto un buon corso di comprensione dell'italiano vale 100 volte di piu di saper scrivere del codice.
Hador
14th November 2011, 13:44
il codice del magic number di carmack è chiarissimo ed è sempre stato chiarissimo, il problema stava nel capire perchè con quel numero funzionasse meglio. Ci sono molte altre implementazioni di sqrt in c che sono MOLTO più incomprensibili a livello di codice. Se vuoi fare le citazioni almeno falle bene :sneer:
A me non va di discutere, quel che intuisco però è che alla vostra università sono rimasti indietro di un 15-20 anni nell'insegnarvi a programmare :/
Axet
14th November 2011, 13:56
E' qui la fuck fest? :rotfl:
http://us.123rf.com/400wm/400/400/tonobalaguer/tonobalaguer1007/tonobalaguer100700349/7455724-blue-mirror-glass-facade-skyscraper-buildings-city-of-houston-texas.jpg
La scalata continua! :rotfl:
edit:
per esser pignoli si scrive INDENTARE, non IDENTARE. Ok che non sai che vuol dire ma almeno scrivilo bene :rotfl:
Dr.Doomed
14th November 2011, 14:01
Sei per caso Axet? No perchè io non ho mai detto niente di tutto questo.
Dove direi che bisogna scrivere codice illeggibile? Lo vedi solo tu.
Ripeto un buon corso di comprensione dell'italiano vale 100 volte di piu di saper scrivere del codice.
Fare una crociata per il diritto a scrivere codice alla cazzo non e` scrivere codice a cazzo, come supportare i diritti dei gay non implica essere omosessuali, chiaro? Dobbiamo fare un disegno?
Arrivi qui chiedendo aiuto su python, al primo reply ti forniscono la chiave per capire il problema e niente , al terzo lo esplicitano in toto e ancora a non capire, anzi ad insultare quando ti fanno pure notare la semplicita` della cosa.
Perculi la scelta dell'indentazione forzata di python corroborando la tua visione con esempi contraddittori.
Perculi gli agrari a tempo perso per motivi che sai solo tu, quando alla prossima solar flare degna di questo nome ci pisceranno in testa a tutti noi elettronici ed informatici
Di tutti quelli che scrivono qui, l'unico che capisce quello che intendi sei tu e gli altri non sanno l'italiano. Come la barzelletta del matto contromano in autostrada.
Ma la perla e` 3+2 anni di ing. informatica e non sapere che cos'e` l'indentazione.
Dai stellina , prenditi una briosche, respira a fondo, lascia che il glucosio arrivi dove serve e poi torna qui a chiedere scusa per 'ste inutili 4 pagine di delirio informatico.
Guarda, ti lascio un' ultima ancora di salvezza: bella trollata.
Hardcore
14th November 2011, 15:08
il codice del magic number di carmack è chiarissimo ed è sempre stato chiarissimo, il problema stava nel capire perchè con quel numero funzionasse meglio. Ci sono molte altre implementazioni di sqrt in c che sono MOLTO più incomprensibili a livello di codice. Se vuoi fare le citazioni almeno falle bene :sneer:
A me non va di discutere, quel che intuisco però è che alla vostra università sono rimasti indietro di un 15-20 anni nell'insegnarvi a programmare :/
Fu talmente chiaro che Carmak lo dovette spiegare al QuakeCon come e perchè avesse usato quel numero. Ma sicuro in Bicocca lo sapevate già N anni prima :)
Doomed guarda gli esempi di risposta alla mia domanda erano talmente corretti, che lanciati in python facevano tutt'altro...
Ti ripeto dove farei una crociata per scrivere codice alla cazzo?
Sicuramente noi siamo indietro e non siamo al livello di milano, peccato, mai detto di essere il migliore o che la mia facoltà sia la migliore :)
Che abbiamo problemi sui linguaggi affrontati è vero ed è stato piu volte sottolineato, e sicuramente vi invidio per i linguaggi che vi vengono insegnati, non nascondo questo. Ma ti ricordo che io sono ingegnere, e molti corsi di programmazione che voi affrontate, giustamente, a ing non vengono fatti. Discussione vecchia sul perchè e se sia giusto, ma è così.
Piccola nota. Sul manuale O Rilly viene affrontato in maniera alquanto dettagliata tutto questo problema, (peccato averlo trovato solo oggi) e viene piu volte sottolineato come a differenza del C l'identazione abbia un importanza fondamentale per il compilatore. Ma evidentemente solo io e il tipo della O Rilly pensiamo che sia una cosa da sottolineare.
In ogni caso si può anche fermarci qua, il mio problema è stato risolto, se vogliamo andare avanti per pagine a dire cose che nessuno ha detto, beh facciamo pure.
Hador
14th November 2011, 15:31
abbiamo scritto la stessa cosa, il magic number non era un problema di scrittura di codice, ma effettivamente dell'algoritmo. Il metodo di carmack non era incomprensibile per niente, è un'implementazione del solito metodo di newton. Il problema stava nel capire perchè quella costante, ma se lo avesse scritto in c, in python, in pseudo codice, la leggibilità del codice non centra nulla.
Detto ciò il problema non è di conoscenza del o dei linguaggi, ma di atteggiamento. I linguaggi si imparano, l'impostazione si fa più fatica. È inaccettabile uscire da un'università oggi e pensare che le performance e l'ottimizzazione del codice siano il cruccio fondamentale e sentenziare che linguaggi vecchi di 20 anni siano mejo di quelli attuali.
Ovviamente non è vero manco il contrario, non mi metto a fare i driver di una scheda di rete in java, è per questo che il confronto 1v1 tra i linguaggi non si fa, perchè hanno applicabilità diverse.
Dr.Doomed
14th November 2011, 15:59
Fu talmente chiaro che Carmak lo dovette spiegare al QuakeCon come e perchè avesse usato quel numero. Ma sicuro in Bicocca lo sapevate già N anni prima :)
Carmack ha dovuto spiegare perche` ha usato quel numero in particolare e perche` funzionasse l'algoritmo, ma per se`il codice era leggibile.
Questo perche`era una soluzione che non si capiva da dove fosse scaturita.
Anche la crittografia RSA e` piuttosto complessa (in tutti i sensi, lol...), ma un conto e` la spiegazione matematica del perche` funziona (comprensibilita`) un altro capire ad una certa linea del codice a che punto sia l'algoritmo (leggibilita`).
Tu confondi le due cose.
Doomed guarda gli esempi di risposta alla mia domanda erano talmente corretti, che lanciati in python facevano tutt'altro...
Gli esempi che ti hanno dato dovevano orientarti alla soluzione, non volevano essere La Soluzione: l'ha scritta in fretta qualcuno che probabilmente s'e` preso un po' di tempo ma non troppo per cercare di darti una mano.
Ti ripeto dove farei una crociata per scrivere codice alla cazzo?
crociata per il diritto a scrivere codice alla cazzo
Se il codice non gira se indentato male ti stanno obbligando ad accettare le loro regole di indentazione per una maggiore leggibilita` del testo. Contestando questo implichi di sostenere la liberta` di scrivere il codice in liberta`, potenzialmente anche alla cazzo. Potenzialmente.
Che abbiamo problemi sui linguaggi affrontati è vero ed è stato piu volte sottolineato, e sicuramente vi invidio per i linguaggi che vi vengono insegnati, non nascondo questo. Ma ti ricordo che io sono ingegnere, e molti corsi di programmazione che voi affrontate, giustamente, a ing non vengono fatti. Discussione vecchia sul perchè e se sia giusto, ma è così.
Su questo, come ing informatico, non posso che convenire: al di fuori di C++ e Java, si demandava molto all'iniziativa personale.
Piccola nota. Sul manuale O Rilly viene affrontato in maniera alquanto dettagliata tutto questo problema, (peccato averlo trovato solo oggi) e viene piu volte sottolineato come a differenza del C l'identazione abbia un importanza fondamentale per il compilatore. Ma evidentemente solo io e il tipo della O Rilly pensiamo che sia una cosa da sottolineare.
Lo O'Reilly e` un libro dove ti insegnano il linguaggio, chiaro che esplicitino la cosa. Noi (almeno, cosi` era per me) non la si sottolineava perche` la si dava per scontata: nessuno contesta infatti che l'indentazione non conti un cazzo in C, bensi` che tu denigrassi l'uso della indentazione come strumento per l'identificazione dei blocchi logici unicamente sulla base del fatto che, appunto, in C e Java l'indentazione non conti un cazzo a livello di compilatore (e` come se uno fanboy Pascal contestasse la scelta delle graffe in C perche` anti-intuitive rispetto a begin/end). Nel caso di python a mio avviso si tratta di una soluzione intelligente per prendere due piccioni con una fava, facendo fronte ad un esigenza (quella delle leggibilita`) che si e` fatta sentire particolarmente forte solo in seguito all'introduzione di C e compagnia bella. Ma e` un'opinione personale, peraltro maturata dopo un certo scetticismo iniziale.
Hardcore
14th November 2011, 16:07
Prendo spunto dall'ultima frase, io ho nel bene o nel male sempre programmato con linguaggi basati sulla filosofia dei blocchi racchiusi in {}. Mi son trovato bene, forse perchè non ho mai avuto niente a che fare con linguaggi differenti, anche l'html per certi aspetti si base su una filosofia analoga del Begin End.
Per ora su python la cosa non mi fa impazzire, anche se ammetto che il codice risulta molto piu leggibile, vedremo, magari cambio idea.
Kat
14th November 2011, 20:24
Pero, e' diventato totalmente non sense sto thread :rotfl:
San Vegeta
14th November 2011, 21:29
Mi mancava il pro player della situazione...Forsr ignori che i compilatori C Java se ne fregano dell aspetto o degli spazi. quindi tabbare è sempre stato un mero vezzo estetico. cosa che qui non è.
il pro player della situazione oltre a saper fare i costrutti base, sa leggere le regole base della sintassi di un linguaggio e capire come funziona python
primo link da google http://programmazione.html.it/guide/lezione/1295/istruzioni-di-base/
Ricordiamo che i gruppi di istruzione devono essere indentati nello stesso modo in quanto è solo l'indentazione che permette di strutturare l'istruzione if else.
A differenza del C, o del Pascal, non esistono parole che delimitano l'inizio e la fine del blocco (le parentesi graffe del C o begin e end del pascal).
il tutto senza chiamare in causa leggibilità stili o quello che ti pare. Per quanto riguarda Carmack, che ammiro moltissimo, ha ammesso che per colpa del codice scritto di fretta e senza commenti, non sa cosa ha scritto fino a poche settimana fa, se riguarda il codice se lo deve studiare come chiunque altro, perdendo tempo.
Mo, china il capo e prendi atto di avere delle lacune DI BASE: è un buon inizio per colmarle.
Hardcore
15th November 2011, 00:10
Ma dai, ma non mi dire. E tutto questo cosa centra con la mia frase che dice: "Python a differenza del C richiede di tabbare come regola per il compilatore"? Parrebbe niente ma confido che tu abbia sicuramente una valida motivazione per andare avanti dicendo stronzate. In ogni caso viva la modestia :)
Questo thread è veramente il teatro dell' assurdo, misto a una certa sboronaggine di personaggi di bassa lega.
Axet
15th November 2011, 01:58
Esatto è il teatro dell'assurdo. 3 pagine per capire cosa vuol dire indentare più una gang bang 1 vs 10000 :rotfl:
Eltarion
15th November 2011, 12:47
Io penso che indentare OBBLIGATORIAMENTE sia una merda. Odio la tabulazione per chiudere i blocchi. Graffe forever!
Io sono lo stronzo che scrive tutto su una riga appositamente per non permettere ai miei colleghi di capire. :sneer:
Hardcore
15th November 2011, 13:10
Io penso che indentare OBBLIGATORIAMENTE sia una merda. Odio la tabulazione per chiudere i blocchi. Graffe forever!
Io sono lo stronzo che scrive tutto su una riga appositamente per non permettere ai miei colleghi di capire. :sneer:
Preparati per l' axet analfabeta e l' over 9000 vegeta !!!!
In ogni caso ho convertito un programmino scritto in c++ in python, e sinceramente preferisco N volte c++. Sta Tabulazione personalmente mi fa cagare.
Hador
15th November 2011, 13:10
io sono quello che fa control shift f e me la rido di voi cojoni che perdete tempo con queste cose :nod:
Axet
15th November 2011, 13:23
Preparati per l' axet analfabeta e l' over 9000 vegeta !!!!
In ogni caso ho convertito un programmino scritto in c++ in python, e sinceramente preferisco N volte c++. Sta Tabulazione personalmente mi fa cagare.
Ma io dico, se uno palesa davanti al mondo intero di essere ignorante nell'ambito che meglio dovrebbe conoscere con conseguente gigantesca figura di merda, poi dovrebbe starsene col capo chino in un angolo. Non credi? :sneer:
Analfabeta perchè tu scrivi cose che non stanno nè in cielo nè in terra cercando di perorare la causa postando link che non c'entrano una sega e io ti dico che spari stronzate? buhahuauhauhauhauhauhauhahuhuahuauhauha :rotfl:
Oltretutto riesci ad affermare l'ennesima bestialità proprio nel 3d dove tutti ti prendono per il culo perchè non sai cosa vuol dire indentare :rotfl:
io sono quello che fa control shift f e me la rido di voi cojoni che perdete tempo con queste cose :nod:
A me allieta la giornata :love:
Hardcore
15th November 2011, 13:39
http://img717.imageshack.us/img717/7517/axetbadass.jpg
Guarda era talmente palese che dopo un po hai smesso di postare che non sapevi piu che pesci pigliare. Stranamente le cose che ho scritte le han poi ripetuti tutti, e niente e nessuno mi convincerà che in C se non tabbo, il compilatore mi segna errore. Ma magari il compiler biccoca è diverso. Il resto sono boiate e cagate inventate su vostre interpretazioni
Eltarion
15th November 2011, 14:20
io sono quello che fa control shift f e me la rido di voi cojoni che perdete tempo con queste cose :nod:
cazzo quanto sei cool, posso avere l'autografo?
Axet
15th November 2011, 14:31
Guarda era talmente palese che dopo un po hai smesso di postare che non sapevi piu che pesci pigliare. Stranamente le cose che ho scritte le han poi ripetuti tutti, e niente e nessuno mi convincerà che in C se non tabbo, il compilatore mi segna errore. Ma magari il compiler biccoca è diverso. Il resto sono boiate e cagate inventate su vostre interpretazioni
Holy shit :rotfl:
Ora quotami dove avrei mai scritto che la leggibilità impatta sull'efficienza del codice e dove sarei sparito, porco ido :rotfl:
Non solo dopo 3 (o 5? spero 3 a sto punto :rotfl:) anni di informatica non conosci la terminologia, ma proprio non riesci a comprendere nemmeno quel che ti si scrive. Le cose che hai scritto tu non le ha ripetute nessuno, un po' come la troiata sul codice di carmack che non è leggibile perchè c'è dentro un numero stranohhhhh :point:
Ti devo davvero quotare tutta la gente che ti dice che non ce la puoi fare? O dove dopo 2 pagine arrivi alla conclusione che in python non si possono usare gli if annidati dopo che per 2 pagine ti hanno spiegato in 314 modi diversi come si fa?
Dopo che è stato palesato che non sei nemmeno in grado di passare da un linguaggio ad un altro, ancora parli? :rotfl:
Mi sembra di parlare con un ritardato, senza scherzare. Nel caso dimmelo che la pianto in quanto non mi piace infierire su chi ha delle difficoltà :)
edit:
cristo mi ero perso il pezzo "su vostre interpretazioni". In pratica ti han dato tutti dell'ignorante ma è il mondo intero che sbaglia.
Ok.
Tranquillo.
E' tuuuuuuuuuuutto appppppppposto.
:rotfl:
Bers
15th November 2011, 15:00
dire che python fa merda perchè obbliga a indentare è come dire che guidare fa schifo perchè nelle strade devi stare sulla destra...
Il fatto è: nessuno ti obbliga ma DEVI indentare, così come si DEVE commentare.
vai a mettere mano a un codice non scritto da te e indentato da cani poi ne parliamo.
Detto ciò python è un linguaggio molto più potente del c++ pur mantenendo delle performance discretamente elevate.
Di che non ti piace ma python è un gran linguaggio e ti consiglio di impararlo anche perchè in ambito web con django e company si sta diffondendo a macchia d'olio accanto a Ruby (altro che se non sbaglio obbliga ad indentare)
Eltarion
15th November 2011, 15:11
dire che python fa merda perchè obbliga a indentare è come dire che guidare fa schifo perchè nelle strade devi stare sulla destra...
Il fatto è: nessuno ti obbliga ma DEVI indentare, così come si DEVE commentare.
vai a mettere mano a un codice non scritto da te e indentato da cani poi ne parliamo.
Detto ciò python è un linguaggio molto più potente del c++ pur mantenendo delle performance discretamente elevate.
Di che non ti piace ma python è un gran linguaggio e ti consiglio di impararlo anche perchè in ambito web con django e company si sta diffondendo a macchia d'olio accanto a Ruby (altro che se non sbaglio obbliga ad indentare)
nono infatti non penso python sia un linguaggio di merda, assolutamente. penso che obbligarti a indentare sia una merda :)
indentare deve essere una mia scelta e devo poterlo fare con il mio stile :P
Hador
15th November 2011, 15:18
o farlo in automatico come tutti quelli che usano un ide non sviluppato 30 anni fa. Comunque direi che ci siamo divertiti anche troppo dai
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.