Dígits d’un nombre enter¶
Aquests exercicis es poden resoldre molt fàcilment utilitzant les característiques del tipus string.
Intenta resoldre’ls ara utilitzant les propietats de la divisió entera i sense usar strings.
Dissenya una funció que, donat un enter positiu, retorni el seu nombre de dígits. Per exemple, per l’enter 1045, la funció ha de retornar 4
Dissenya una funció que, donat un enter positiu, retorni un string amb cadascun dels dígits de l’enter des del darrer fins al primer i separats per un guió. Per exemple, per l’enter 1045, la funció ha de retornar “5-4-0-1”.
Dissenya una funció que, donat un enter positiu, retorni un string amb cadascun dels dígits de l’enter des del primer fins al darrer i separats per un guió. Per exemple, per l’enter 1045, la funció ha de mostrar 1-0-4-5.
Dissenya una funció que, donat un enter positiu, retorni la suma dels seus dígits. Per exemple, per l’enter 1453, la funció ha de retornar 13.
Dissenya una funció que, donat un nombre enter positiu, obtingui i retorni el seu dígit més gran i el més petit. Per exemple si el nombre és 38712 la funció ha de retornar 8, 1
Dissenya una funció que, donat un enter positiu i un dígit (un enter entre 0 i 9), comprovi si la representació decimal del primer enter conté el dígit donat. La funció ha de retornat True en aquest cas i False en cas contrari.
Dissenya una funció que, donat un enter positiu i un dígit (un enter entre 0 i 9), compti i retorni el nombre de dígits de l’enter que són iguals al digit donat. Per exemple, per l’enter 121 i el digit 1, la funció haurà de retornar un 2 ja que 121 conté dues vegades el dígit 1.
Dissenya una funció que, donat un enter positiu i un dígit (un enter entre 0 i 9), comprovi si la representació decimal del primer enter conté com a mínim dues vegades el dígit. La funció ha de retornat True en aquest cas i False en cas contrari. Per exemple, el nombre 123537 conté dues vegades el dígit 3, però no conté dues vegades el dígit 5. Per tant, retornarà True amb els paràmetres 123537 i 3; en canvi, retornarà False amb els paràmetres 123537 i 5.
Dissenya una funció que, donat un nombre enter positiu, calculi i retorni el dígit més gran i la posició (començant per les unitats, a les que considerem que estan a la posició 0).
Dissenya una funció que, donat un nombre enter positiu, calculi i retorni el dígit més petit i la posició (començant per les unitats, a les que considerem que estan a la posició 0).
Dissenya una funció que, donat un nombre enter positiu i un altre enter que representa la posició d’un dígit en un nombre (0 per les unitats, 1 per les desenes, etc.) obtingui i retorni el dígit que ocupa aquesta posició en el nombre. Per exemple, donats el nombre 3457 i la posició 2, la funció ha de retornar el dígit 4.
Dissenya una funció que, donat un nombre enter positiu, determini si és cap-i-cua. Suggeriment: useu la funció que compta el nombre de dígits d’un enter i la que obté un dígit corresponent a una posició. La funció ha de retornat True si el nombre és cap-i-cua i False en cas contrari.
Dissenya una funció que a partir d’un llista de tuples retorni un enter. Cada tuple de la llista està formada per dos enters que indiquen, respectivament, el dígit i la posició. Dígit és un valor positiu entre 0 i 9 i posició és un valor més gran o igual a 0 que indica la posició del dígit, de dreta a esquerra, començant per la posició 0. El valor enter és el resultant de posar els dígits donats a les posicions corresponents. Per exemple, per la llista lnum = [ (5, 3), (2, 4), (0, 2), (0, 0), (1, 1)], ha de tornar l’enter 25010
Dissenya una funció que donat un nombre enter positiu, retorni un string amb la seva representació polinòmica.
Desa les funcions al fitxer polinomi.py
. Les funcions han de passar el següent doctest:
>>> from polinomi import polinomi1
>>> polinomi1 (1045)
4
>>> from polinomi import polinomi2
>>> polinomi2 (1045)
'5-4-0-1'
>>> from polinomi import polinomi3
>>> polinomi3 (1045)
'1-0-4-5'
>>> from polinomi import polinomi4
>>> polinomi4 (1453)
13
>>> from polinomi import polinomi5
>>> polinomi5 (38712)
(8, 1)
>>> from polinomi import polinomi6
>>> polinomi6 (121, 1)
True
>>> polinomi6 (121, 3)
False
>>> from polinomi import polinomi7
>>> polinomi7 (121, 1)
2
>>> polinomi7 (121, 3)
0
>>> from polinomi import polinomi8
>>> polinomi8 (123537, 3)
True
>>> polinomi8 (123537, 5)
False
>>> from polinomi import polinomi9
>>> polinomi9 (100537)
0
>>> polinomi9 (177530)
3
>>> from polinomi import polinomi10
>>> polinomi10 (100537)
3
>>> polinomi10 (177530)
0
>>> from polinomi import polinomi11
>>> polinomi11 (3457, 2)
4
>>> from polinomi import polinomi12
>>> polinomi12 (34543)
True
>>> polinomi12 (34553)
False
>>> from polinomi import polinomi13
>>> polinomi13 ([(5, 3), (2, 4), (0, 2), (0, 0), (1, 1)])
25010
>>> from polinomi import polinomi14
>>> polinomi14 (6754)
'6*10^3 + 7*10^2 + 5*10^1 + 4'
>>> polinomi14 (600009)
'6*10^5 + 9'
>>> polinomi14 (4500980876009)
'4*10^12 + 5*10^11 + 9*10^8 + 8*10^7 + 8*10^5 + 7*10^4 + 6*10^3 + 9'
>>> polinomi14 (3200)
'3*10^3 + 2*10^2'
Nota
Podeu descarregar el fitxer amb tests polinomi.txt
Solució
Disposeu de solucions al fitxer polinomi.py