1
Esercizi / Re:pseudocodice prima e ultima cifra in un numero
« il: Aprile 09, 2021, 14:53 »...Perché dovrei usare % e log(x, 10)?e soprattutto come dovrei usarli? non ne trovo l'utilità in un esercizio del genere...
bah ... un "esercizio" serve a farti "vedere" qualcosa, in genere è utile, guarda qua :>>> import math
>>> num = 2345
>>> num % 10
5
>>> num // 10**(int(math.log10(num)))
2
>>> num = 23456
>>> num % 10
6
>>> num // 10**(int(math.log10(num)))
2
>>>
Comprendilo, poi descrivi i passi necessari per farlo nel Tuo modo ed in quest'altro : alla fine avrai un'idea "nuova" (nel senso che altrimenti non verrebbe da sola)
P.S. : guarda che devi trattare numeri, NON stringhe
Grazie per la risposta.
A calcolare l'ultima cifra senza usare stringhe sarei potuto arrivarci che bastava calcolare il resto di una divisione per 10, ma non ci sono arrivato senza "aiutini"... in quel momento vedevo una sola strada.
Invece, senza la tua spiegazione non avrei pensato di usare log in questo modo.
Sono dovuto tornare a vedermi la definizione di logaritmo.

-Log10(num) mi trovo l'esponente a cui deve essere elevato 10 per arrivare a num.
-Se tronco dopo la virgola, è come se trovassi l'esponente per convertire num in notazione esponenziale
-Quindi, dividendo num per un ordine di grandezza è come se "spostassi" la virgola
quindi 2345 / 10**3 = 2,345.
-La parte dopo la virgola non mi interessa, per cui tronco con int o floor.
import math
num = int(input("inserisci il numero: "))
odg = 10 ** int(math.log10(num))
first_digit = num // odg
last_digit = num % 10
print ("Prima cifra:", first_digit ,
"\nUltima cifra:", last_digit)
Inoltre ho notato che posso calcolare anche la lunghezza di num con log dato che log10(num) mi da un numero compreso tra n-1 e n (dove n sta per numero delle cifre). Quindi basta troncare e aggiungere 1 per trovare n.

Fantastico, ti ringrazio ancora una volta, il tuo intervento è stato illuminante.
Spero che la domanda che ho fatto non ti abbia infastidito essendo una domanda da super nabbo