Nombres heureux

On considère un entier naturel \(n\) et on calcule la somme \(s\) des carrés des chiffres de \(n\). Par exemple si \(n = 32\) alors \(s = 9+4=13\). On recommence avec \(n=13\) et on obtient \(s=1+9=10\). On recommence avec \(n=10\) et on obtient \(s=1+0=1\). Si on recommence on obtient toujours \(1\). On démontre qu'en appliquant ce processus, soit on reste à \(0\) (si \(n=0\)), soit on arrive à \(1\) et on y reste, soit on arrive à \(4\) et on va reproduire la boucle \(4, 16, 37, 58, 89, 145, 42, 20, 4\).

En appliquant le processus décrit ci-dessus à un nombre \(n\), si on arrive à \(1\), on dit que le nombre \(n\) est heureux.

Écrire la fonction heureux qui prend en paramètre un entier n positif et renvoie True si le nombre est heureux et Falsesinon.

Indice

On pourra utiliser les fonctions str et int pour obtenir les chiffres à partir de l'écriture d'un nombre. Par exemple int(str(387)[1])est le nombre 8. Une autre possibilité est d'utiliser les opérateurs % et //.

Exemples
>>> heureux(32)
True
>>> heureux(58)
False
>>> heureux(0)
False
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10
.128013:pbv%(40i2+edmx3;s7= 1o5w_lSAnatf)9hR6qcrg*TéyPF!ku8/050n0m0G0F0j0B0s0v0O0B0F0s0s0u010G0j0c010406050s0Z0o0o0F0P0U040C0x0B0Z0_0x0E0v020F0o0c0r0v0L0m130P0N0Z0m0s050#101214160~0c041u1B051E0#1E1G1B0~0n0j0e0.0:0=0@0K0j0Q0K0B1U0K0G0|050)0d0B0m1P0;0?011T1V1X1V0G1%1)1#0G0d0x0n161$0P1C0G0K0.190s0c0F0E0@0k011+1R010H0+0m0E1h0m1#26282d1-2g1)2j0o2l040a0v0V0P0x0c0x0s0j1c1e0%240P0P0m0O2G1u2n0E1C0#222S0G201 210n2p0@1X0E2i2D1#1M1O0/1,2$0j2(0E1|1N1#0c2L1C2Q2S2}0 271e2.2e2?0P130B0|0v0w2P310}302o331-3537390k3c283e2Q2#013j0F38040v0q3n2R0~3q3h0@3t3v0v0h3z3p313r3F390y3J3B3L3D3s0x363u390M3Q3f321Q3i3V3k3w0t3!3C3%3E3)3X3w0!3-3S3/3U3W3G0J3^3g3`3N040w0i3 3$2/3{3*0w3b1v3d1D2{1u2,2V0n2Z3r0O1|2v0$1N1C2`0m2|4e4d3o054n0%4v40480Y0|0%0H3J3#3r0z394J3.480E0H0|0K0m0Z2L0Z0p4O3_480{040g4!4D340|0E4*472e4%0I0b3Q0v4_0v4K3T4F040j4I4x2R4{4P4,044.523w4|3`0x0|0u0u3J544#2e0o0j0|45595b4$0|4@59064`5w5i4+1-4~2L0G4W582}5y4:5A0O0|0W3u0s0m4^4`5q2e4~0z1T1)5h5S3i4-5Y551-5d040X5g595H3r5l0|4c5G5Z0@0x4M04280n5$5j5!575~5z5^0|5+4/5/5m043I5p5%0@4%5t2}5v5x4_5@3s0|1t5-6l5)5,5?6d015:045o6h6j6k6u4~0H3V625I3E0|0O6G3r5_0|2;6L3T0E0d6n2W673T4%4)6c5 6I616!63014=6g3d6i6A5R6u0E6n6Q5c0|0l6s3d5.6R6T4 0E0G6W3`6Y734Q6J764;0|0I6@485)0R0R7d5k693m5u6/6l6=6%6t6#016r7i606o6z6:7s4~507v6$5F6|6q5e6{3o6}3`6w5=4e6u6f5Q6j6l5B0(5E7D010Y5K040S0P1r7S7L4E0|5C7X6p6C7#5M0,5P5u1u4A4u4f7|0#4i1u0G4k812X2T1{1}2V0F1(7~4i1A4C6H012L0o0A0H0F0Y0m0A0K0q0|1m1o1q1s0v6,4y1H3e1B0D0e2M0v1)0-2B0T0P0F0G4V0P0-4z4o040f7`8S0v0(4{7{040#0#8V4B8X0G0v0Z2(0v6E0E2N0j1d0v1q0j0.3u0O0Z1)8G0F0v0s0x121*0%0-0O140P0T0-970.1T0H0H2L9d1*8R4B588!5t1K4q2-3`1/1W1Y1!8f3r2r2i2k0|2x0C0O0P0`8+0V0U221d4J4t8f2~4e8!7U4G0m512 6u5`4{6(8g4R6n942u0A992K1s791-759%3M5#9@6X7b8y3A5w7o9*957Y7u7:7s6w6y6-9 6C0|5V2h7Y7p7F7K7H5*7J536la79;6e5s7*aa7s7p93a2a56)a47r6)av9+7^aB8g5)0l7Y9?9Zau9_aMaz0|8U9`7M6944ap6*7baX7f7haT486w7l7y7T6;aO7G6uaAa/aN7qa=aQ8#8%ay8g7Na83o6.7+5T7-7W0Pahama-04aw2u3Q3R6)4~4HaX9#aX9)044U4W4V4Za%7a4(bka.4y7Q9|7*9V4 9Ya^9(bvb87s6ral5a6uaobr9=ar7m6AbA7.b67Y7!5L5NaFa97zbfac5WbZai7;0|7%7)bNaq049}0}7nabbBafbFbKbH7I7Y7NaX7RbQ6/6B7Ab45DbUa|3rbW7$7(b)9~bRb^0m1XbCb*a?b7b|a_5fb 696baP8gc2a+c4bSb5cob25JbX7@asb#8g4~cj5Oc1bPcyb@cna35eb`baaE9-9a9:b/aYbtc!agcN047c7_0#9U1H4g7 4r0~7 0(0*0,04.