Forum >> Principianti >> Funzioni per i divisori di un numero

Pagina: 1

Salve a tutti, in un esercizio mi viene chiesto di scrivere una funzione div11(x) che determini se un intero x>=0 è divisibile per 11, senza usare divisione intera, moltiplicazione e operatore resto.

Il suggerimento è di ricordare che un numero è divisibile per 11 se il valore assoluto differenza tra la somma delle sue cifre in posizione pari e tra la somma delle sue cifre in posizione dispari è 0 o un multiplo di 11. Qualcuno potrebbe aiutarmi a capire come scrivere la funzione?


--- Ultima modifica di iulian in data 2019-01-20 21:46:56 ---
Ciao caro, non è per volerti essere avverso, ma è giusto che questo esercizio provi a scriverlo da solo. Non è impossibile, hai già la traccia di quello che devi fare in quello che scrivi, quindi tramutalo in codice (se poi non capisci qualcosa condividile qui).

Credimi, è infinitamente meglio che impari da solo, piuttosto che leggere una risposta fatta da altri. Sai quella cosa dei pesci e del pescare? Ecco appunto...

Cya
Daniele aka Palmux said @ 2019-01-20 23:04:05:
Ciao caro, non è per volerti essere avverso, ma è giusto che questo esercizio provi a scriverlo da solo. Non è impossibile, hai già la traccia di quello che devi fare in quello che scrivi, quindi tramutalo in codice (se poi non capisci qualcosa condividile qui).

Credimi, è infinitamente meglio che impari da solo, piuttosto che leggere una risposta fatta da altri. Sai quella cosa dei pesci e del pescare? Ecco appunto...

Cya

Forse mi perdo in un bicchiere d'acqua, ma non capisco come sommare le cifre pari (e idem per le dispari)
Forse mi perdo in un bicchiere d'acqua, ma non capisco come sommare le cifre pari (e idem per le dispari)
Non volendo/potendo usare gli strumenti che hai indicato, ci sono molte cose che potresti fare.

Per esempio estrarre l'ultima cifra dal tuo numero (intero) e vedere che numero è, oppure sfruttare l'aritmetica binaria propria di ogni scatola magica con una cosa tipo:
# pari = (<valore> & 1) == 0
# dispari  = (<valore> & 1) == 1

>>> pari = (11 & 1) == 0
>>> pari
False
>>> dispari = (11 & 1) == 1
>>> dispari
True

Cya
"non usando la divisione intera, il resto..."

Ecco, questo mi sembra il classico esercizio inutilmente complicato che mi fa incavolare contro gli insegnanti incapaci di insegnare. Voglio dire, mi sembrerebbe più interessante vedere se sei capace di replicare l'algoritmo carta-e-penna in python, estraendo le cifre pari e dispari a colpi di divisione intera e resto, appunto. Dovresti provare a risolverlo in questo modo: fidati, è molto più interessante e istruttivo.


Invece, vista questa versione complicata in modo assurdo e senza reale motivo didattico che ti hanno dato, il mio umile suggerimento è barare, ovviamente.
- Trasforma il numero in una stringa
- a questo punto le stringhe hanno già tutti gli strumenti per estrarre facilmente le cifre pari e dispari (con lo "slicing")
- estrai tutte le cifre pari, ritrasformale in numero, e fai la somma
- lo stesso per le dispari
- e vai avanti





Pagina: 1



Esegui il login per scrivere una risposta.