Forum >> Programmazione Python >> Scripting >> problema identazione e differente posizione rispetto al prompt

Pagina: 1

Cari amici, care amiche
sto scrivendo un piccolo codice con python ed è nato un piccolo problema. In sostanza tutto è partito dal seguente listato:
>>> def fib(n):
... a,b=0,1
... while a<n:
... print(a, end=', ')
... a,b=b,a+b
... print()
...
>>> fib(1000)
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, #Output

però scrivendo lo stesso codice senza il print finale si ottien un risulato differente, in particolare:
>>> def fib1(n):
... a,b=0,1
... while a<n:
... print(a, end=' ')
... a,b=b, a+b
...
>>> fib1(8)
0 1 1 2 3 5 >>> #Output

Quindi mi chiedo come mai nel secondo caso il risulato è una sorta di nuovo prompt (i 3 segni di maggiore sono dopo il risultato della funzione fib1(n)?).

Qualcuno potrebbe gentilmente illuminarmi su questa interessante situazione?

Perché python è un bravo ragazzo e fa esattamente quello che Tu gli dici di fare ;)




Basta leggere la docs della funzione built-in print(), di default inserisce un carattere '\n' alla fine della stampa di una stringa, il che equivale a dire che inserisce una nuova riga e ritorna a capo.

Inserendo il parametro "end=', '" ovvero "end=' '" Tu alteri tale comportamento ed alla fine della stampa viene inserito una virgola + spazio o solo uno spazio, rispettivamente; inserendo fuori dal ciclo una print() vuoto non vengono stampati caratteri, che non ci sono, ma il default "end='\n'" viene rispettato ed il suo effetto è di inserire una nuova riga e tornare a capo (in sostanza inserire un cariage return + line feed nel mondo windows, un EOL nel mondo Unix-like)

Fatti non foste a viver come bruti...


Pagina: 1



Esegui il login per scrivere una risposta.