Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    138

    Python: Alcune cose non capite sugli operatori

    Ciao!

    Sto leggendo le lezioni su Python e ci sono delle cose non chiare:

    Nella lezione 6 si parla degli operatori << e >>. Nella descrizione è scritto che servono per "shift bit a bit a sinistra e a destra". Questo è il mistero. Leggendo l'esempio non riesco a capire perche 24>>1 fa 48 e 10<<1 fa 5. Che operazione matematica sarebbe?

    Poi se non chiedo troppo nella lezione successiva vengono spiegati gli array. Nell'esempio sul concatenamento delle liste vengono date anche lettere accentate mentre quando ho ripetuto l'esperimento l'interprete interattivo mi ha dato errore. Poi per confondermi ancora di + perché la "è" non ha gli apici? È fatto di proposito o è un errore di battitura durante la scrittura del documento?

    Grazie a chi vorrà rispondermi.

    Buona serata e buon ferragosto

    david

  2. #2

    shift

    l'operazione di shift consiste nello spostamento dei bit di uno o piu' posti verso destra o sinistra

    24<<1 spostamento verso sinistra di un posto
    24<<2 spostamento verso sinistra di due posti

    24>>1 spostamento verso destra di un posto
    24>>2 spostamento verso destra di due posti

    Questo equivale del punto di vista matematico alla moltiplicazione e divisione per due.
    Precisamente (<<) = (*2) e (>>) = (/2)

    Ecco come si spiegano i due esempi.

    Ciao

  3. #3

    e accentanta

    E' un errore di battitura

    la riga corretta e' :
    lista2 = ['d','e','f']

    Mi devo ricordare di dire alla redazione di sistemare.

    Ciao e grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    138

    Re: shift

    Originariamente inviato da richland

    Questo equivale del punto di vista matematico alla moltiplicazione e divisione per due.
    Precisamente (<<) = (*2) e (>>) = (/2)

    Ecco come si spiegano i due esempi.

    Ciao
    Ah, quindi <<1 e >>1 sarebbero doppio-metà. Grazie ma non capisco lo scopo. In che occasione sarebbe meglio scrivere "24>>1" di "24/2" ? E poi a cosa servirebbero seguiti da un numero maggiore di 1? (es. >>2, >>3)?

    Cmq per quanto riguarda l'errore di battitura, mi pare ovvio che nelle liste non si possano mettere lettere accentate, giusto?

    ciao e grazie della pazienza

  5. #5

    c'e' sempre un motivo ...

    Si vede cha non hai studiato elettronica.

    Nei microprocessori lo shift e' fondamentale perche' con un solo ciclo di clock della cpu io posso fare una operazione di moltiplicazione o divisione per due, invece fare 24/2 richiede un intero algoritmo di divisione che richiede molti cicli di clock della cpu.


    Poi nelle liste si possono mettere delle e accentate, basta fare 'è' (chiaramente ci finira' dentro il codice ascii del carattere "è".


    Saluti

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    138

    la è accentata

    Tornando al fatto della lista, ho scritto:
    lista=['a','b','c','è']

    e Python mi ha risposto:
    UnicodeError: ASCII encoding error: ordinal not in range(128)

    dunque cosa c'è che non va?

    ciao

  7. #7

    che strano

    Copiando cio' che hai scritto mi da lo stesso tuo errore,
    ma scrivendolo a mano non lo da'.

    Prova anche tu a scriverlo a mano digitando la è dalla tastiera.

    Secondo me c'e un carattere strano non visibile che non e' codificabile in unicode e incasina l'interprete.

    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    138
    La lista l'ho scritta a mano nell'interprete di Python e poi, dopo aver ricevuto risposta dall'interprete, ho copiato lista e risposta qui.
    Forse si potrebbe fare con la funzione chr(x) ma qual è il codice della "è" da mettere come parametro al posto di x? Cosa ne pensi?

    ciao

  9. #9

    funziona

    chr(232) = 'è' = '\xe8' (cioe E8 esadecimale)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.