Primo script

di il
8 risposte

Primo script

Ciao ragazzi, dopo aver fatto alcuni tentativi con il C++, ho deciso di provare Python, essendo leggermente più semplice.
Ora, dopo aver scaricato ed installato Python e come IDE Wing101(last version), ho iniziato a seguire il tutorial in inglese presente sul sito del linguaggio stesso. Debbo dire che non ho riscontrato nessuna difficoltà, tranne che per questo script:

a, b=0, 1
while a < 10:
	print (a, end=' ')
	a, b=b, a+b
Tale difficoltà è dettata non dalla sintassi del codice, la quale è abbastanza semplice, ma nel comprendere come si faccia ad ottenere la successione di numeri (la sequenza di Fibonacci). So che è davvero banale, ma mi piacerebbe capire. Grazie in anticipo!

8 Risposte

  • Re: Primo script

    Certo, venendo dal C ti aspetteresti che venga generata la sequenza delle potenze di 2.

    In realtà in Python si procede da destra a sinistra, quindi
    
    	a, b = b, a+b
    
    vuol dire
    
    	(variabile virtuale d) = a+b
    	(variabile virtuale c) = b
    	b = d
    	a = c
    
    e quindi il nuovo b è la somma dei due precedenti elementi della successione, il nuovo a è uguale al precedente elemento della successione
  • Re: Primo script

    Vediamo se ho capito:

    -Avendo la sequenza

    0 1 2 3 5 8

    è come se con un "cursore", spostandomi verso destra, assegnassi alle variabili a e b il valore che va a sommarsi ottenendo il numero successivo. Spero di essermi spiegato bene.
    Ad ogni modo sei stato molto chiaro e gentile!
  • Re: Primo script

    Sì la potresti vedere così, ma manca un 1
    
    [0  1] 1  2  3  5  8
     0 [1  1] 2  3  5  8
     0  1 [1  2] 3  5  8
     0  1  1 [2  3] 5  8
     0  1  1  2 [3  5] 8
     0  1  1  2  3 [5  8]
    
  • Re: Primo script

    Chiarissimo, grazie!!! Comunque hai ragione, ho dimenticato l altro 1

    Volevo sottoporre alla vostra attenzione un altro script la cui sintassi è abbastanza semplice ma nel quale viene utilizzato un (chiamiamolo) comando
    e non riesco a capirne la modalità d'uso.

    La parte di codice a cui faccio riferimento sta alla 3a riga ed il mio dubbio ricade sull' "end=' ' ".
    >>> # determina se i numeri di seq sono pari o dispari
    >>> seq = [1, 2, 3, 4, 5]
    >>> for n in seq:
    ...     print('Il numero', n, 'è', end=' ')
    ...     if n%2 == 0:
    ...         print('pari')
    ...     else:
    ...         print('dispari')
    ...
    Il numero 1 è dispari
    Il numero 2 è pari
    Il numero 3 è dispari
    Il numero 4 è pari
    Il numero 5 è dispari
    
  • Re: Primo script

    Premessa: se hai una domanda su una cosa diversa dal thread corrente, aprine uno nuovo.
    Un sito che devi sempre avere a portata di mano: docs.python.org.
    Da lì vai alla parte delle 'builtin functions' e cerchi .
    Dalla sinossi:
    print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
    Print objects to the text stream file, separated by sep and followed by end. sep, end, file and flush, if present, must be given as keyword arguments.
    Cioè la funzione print() stampa quello che deve su stdout, terminandolo con il carattere predefinito per end, cioè '\n'. Se non si vuole emettere il terminatore di linea di default (che 'manda a capo'), basta aggiungere la keyword con il suo valore. Nel tuo caso, end=' ', cioè uno spazio.
  • Re: Primo script

    Scusate se mi accodo anche io. La mia richiesta è leggermente diversa in quanto sto cercando ci capire un codice di linguaggio C per quanto riguarda la ricorsione di Fibonacci. Il codice è il seguente:
    #include <stdio.h>
    #include <stdlib.h>
    
    long fibonacci (long);
    
    int main(int argc, char *argv[])
    
    {
        int n;
        printf("Calcolo numero di Fibonacci - Digita un numero naturale: ");
        scanf("%d", &n);
        printf("Il numero di Fibonacci nella posizione %d e': %ld\n", n, fibonacci (n));
        system("PAUSE");
        return 0;
    }
      long fibonacci (long i)
    
    {
        if (i==0)
            return 0;
        else if (i==1)
            return 1;
        else
            return fibonacci(i-1) + fibonacci(i-2);
    }
    
    Quello che voglio capire è come fa il compilatore a sapere che posizioni hanno i numeri che inserisco in base al calcolo della funzione.
    Mi spiego meglio, se io metto il numero 13 mi da risultato 233, il chè è corretto, ma come lo fa il calcolo?
    Nella mia ignoranza ho pensato che F(13-1) + F(13-2) = 12 + 11 = 23, mentre il compilatore fa un altro tipo di calcolo che non riesco a notare nel codice...
  • Re: Primo script

    Apri un thread nella sezione corretta.

    Comunque F(13-1) è uguale a F(12), non a 12.
  • Re: Primo script

    Weierstrass ha scritto:


    Apri un thread nella sezione corretta.

    Comunque F(13-1) è uguale a F(12), non a 12.
    scusa ho visto adesso che qui trattate solo python, chiedo venia per la distrazione.
Devi accedere o registrarti per scrivere nel forum
8 risposte