Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2021-22 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

Codice ASCII (inserimento di caratteri speciali da tastiera)

c
czarbo2 (2400 points)
4 9 15
in Programmare in Python by (2.4k points)
Ciao ragazzi, mentre mi esercitavo con Python (sono ancora agli inizi)  mi è sorto un dubbio, o meglio, un fatto che non riesco a risolvere: volevo utilizzare dei simboli ASCII durante la scrittura di un programma, però nel momento in cui vado a digitare "Alt + NumeroSimbolo" mi tornano dei caratteri diversi che non corrispondono a quelli digitati.

Come posso risolvere? Esiste un metodo specifico per utilizzarli nell'IDLE di Python?

Grazie in anticipo!

CZ
3.0k views
closed

3 Answers

Best answer
francesco.dev (33560 points)
14 51 129
by (33.6k points)
selected by
Forse penso di aver trovato la soluzione, perché mentre parlavamo nei commenti ho capito che stai usando un portatile!

Allora prova con questa soluzione:
Per poter inserire i simboli del codice ASCII devi tener premuto "FN + ALT + valore simbolo ASCII".

Questo perché i portatili presentano alcune funzioni diverse sulla tastiera, proprio come la FN che viene usata per abilitare l'uso di alcuni comandi come, appunto, "ALT + serie di numeri".

Però tu dici che sul blocco note tutto funziona, allora prova ad usare direttamente l'IDE Spyder! Perché è sicuramente un problema legato all'IDLE di Python, visto che sul blocco note l'inserimento dei caratteri ASCII funziona!

Spero di aver trovato la soluzione giusta!
Fammi sapere e buona serata.

- Francesco Pio Scognamiglio
c
czarbo2 (2400 points)
4 9 15
by (2.4k points)
Ho provato le seguenti sequenze:

(su IDLE)
- Alt +  97/Fn + Alt + 97 restituisce "a"
- Alt + 8730/Fn + Alt + 8730 restituisce "apostrofo"

(su blocco note)
- Alt +  97/Fn + Alt + 97 restituisce "a"
- Alt + 8730/Fn + Alt + 8730 restituisce "freccetta a destra"

I simboli che dovrei utilizzare hanno i seguenti valori ASCII: 205, 187, 188, 186, 200, 201.

Comunque, grazie per l'aiuto!

CZ
francesco.dev (33560 points)
14 51 129
by (33.6k points)
È stato un grande piacere!
Sempre disponibile.
Se pensi che la mia risposta sia stata soddisfacente e inerente alla risoluzione del tuo problema (ovvero usare combinazione di tasti su un IDE come Spyder e non sull'IDLE) puoi scegliere la mia risposta come risposta migliore, cosicché chi avrà lo stesso problema potrà leggere la mia soluzione!
LeonardoEmili (35740 points)
11 65 155
by (35.7k points)

Ciao!
Questo accade perché di default il tastierino numerico ti permette di accedere solo ai primi 256 caratteri, praticamente se richiedi un carattere superiore al numero 256 ti ritornerà un carattere interno a questo loop. Per provare prova ad inserire con Alt (Alt+Fn se sei da notebook) il codice ASCII 1, poi prova col 257 e vedrai che otterrai lo stesso risultato.
Per sbloccare la situazione devi andare a modificare il registro di sistema al percorso:

Computer\HKEY_CURRENT_USER\Control Panel\Input Method

Qui dovrai creare un nuovo valore stringa ('string registry value' se lo hai in inglese )chiamata "EnableHexNumpad " e settarla col valore 1.
Finito!
Ora potrai inserire i codici ASCII che più desideri.
P.s. Per esperienza personale ti consiglio di riavviare il pc per rendere effettivi i cambiamenti.

Sperando di averti aiutato, ti auguro una buona serata!

Leonardo Emili

francesco.dev (33560 points)
14 51 129
by (33.6k points)
Ciao ma i simboli del codice ASCII non vanno da 0 a 255 (oltre alle varianti che presentano quattro cifre di cui la più significativa è uguale a 0)?
Oppure tu ti riferisci anche ad altri simboli oltre a quelli che ho appena citato?
LeonardoEmili (35740 points)
11 65 155
by (35.7k points)
Quelli standard sì ma alcuni simboli , ad esempio radice quadrata e altri, vanno oltre i standard 256 :)
c
czarbo2 (2400 points)
4 9 15
by (2.4k points)
Grazie per la risposta, proverò a fare come mi hai suggerito ;)
c
czarbo2 (2400 points)
4 9 15
by (2.4k points)
Ho seguito il procedimento che mi hai indicato e utilizzando l'editor di Python il problema rimane.
Invece, utilizzando un file di blocco note,  la combinazione "Alt + numero" funziona correttamente. Sicuramente l'IDLE richiederà qualche passaggio differente che ancora non conosco.

Se riesco a trovare la soluzione, la inserisco!
Grazie per il tuo aiuto.

CZ
francesco.dev (33560 points)
14 51 129
by (33.6k points)
Ciao czarbo2, sono francesco.dev, hai provato ad usare direttamente un IDE (come Spyder) e vedere se anche su questo hai problemi?
Perché se mettendo il comando sul blocco note te lo legge, allora c'è un problema con l'IDLE di Python! Io ho usato tranquillamente Spyder per fare la prova ed ha funzionato.
Vedi se le risposte che ti ho dato sotto possono aiutarti, fammi sapere se hai risolto!
- Francesco Pio Scognamiglio
LeonardoEmili (35740 points)
11 65 155
by (35.7k points)
czarbo2 ho cercato in rete il tuo problema, mi puoi confermare che in basso a destra, accanto alla voce "encoding" c'è scritto UTF-8 ?
c
czarbo2 (2400 points)
4 9 15
by (2.4k points)
Buongiorno!

francesco.dev ho provato a digitare il comando "Alt + NumeroTastierino" su Spyder e non ho riscontrato nessuno problema. Riconosce tutti i simboli correttamente.

Confermo a LeonardoEmili che la alla voce "Encoding" corrisponde la sigla "UTF-8".
Sembra che il problema ci sia solamente quando utilizzo l'editor fornito da Python.

Comunque, ringrazio entrambi per il vostro aiuto! :)

CZ
LeonardoEmili (35740 points)
11 65 155
by (35.7k points)
Felice di averti aiutato :)
francesco.dev (33560 points)
14 51 129
by (33.6k points)
È stato un piacere
Sempre pronti a dare una mano!
Buona giornata :D
francesco.dev (33560 points)
14 51 129
by (33.6k points)

Ciao czarbo2!

Per prima cosa potresti verificare la soluzione che ha presentato LeonardoEmili.

Se non dovesse funzionare per qualsiasi motivo, ti chiedo di essere più specifico cosicché possiamo aiutarti a risolvere il tuo problema:
Il valore ottenuto non corrisponde al codice ASCII anche se digiti valori compresi tra 0 e 255?
Poi, vorrei sapere se digiti la sequenza "Alt + 97" cosa ottieni? Dovrebbe restituirti una "a".
Invece se digiti la sequenza "Alt + 8730" cosa ottieni? Questa volta dovresti ottenere la radice quadrata.

Quindi, se il metodo di Leonardo non dovesse funzionare, allora rispondi a queste domande per entrare nel dettaglio del problema e cercare di risolverlo tutti insieme (visto che a volte alcuni problemi non sono così immediati da risolvere e bisogna ragionarci su)!

- Francesco Pio Scognamiglio

LeonardoEmili (35740 points)
11 65 155
by (35.7k points)
Ovviamente, con poche informazioni questo è il massimo che possiamo darti, ma se riesci a postare qualcosa di più aggiorna il post e saremo felici di aiutarti
francesco.dev (33560 points)
14 51 129
by (33.6k points)
Concordo pienamente con te Leonardo! :)
c
czarbo2 (2400 points)
4 9 15
by (2.4k points)
Ciao!

Ancora non ho provato il procedimento di "LeonardoEmili", comunque i valori che digito, Alt + numeri tastierino numerico da notebook, sono compresi tra 0 e 255 seguendo questo documento: "https://www.google.it/search?q=ascii&rlz=1CDGOYI_enIT757IT757&hl=it&prmd=ivsn&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiv3_7Ipd_WAhVrDJoKHVRzCfQQ_AUIESgB&biw=375&bih=591#imgrc=oj5RgYIVN5NHOM:". Il "problema" è che digitando un valore me ne viene restituito uno diverso.
francesco.dev (33560 points)
14 51 129
by (33.6k points)
Ad esempio se digiti "Alt + 97" cosa ti restituisce??
francesco.dev (33560 points)
14 51 129
by (33.6k points)
Ricorda che da notebook serve cliccare anche sul tastino fn per poter inserire dei valori dal tastierino numerico in codice ASCII!
francesco.dev (33560 points)
14 51 129
by (33.6k points)
Ti scrivo una nuova risposta con la modalità che devi seguire!