Chiffres égaux
Bonsoir,
je vous soumets un petit programme python pour tester si les chiffres du début et de la fin d'un nombre sont égaux.
Exemples: 7744 oui, 222999 oui, 222099 non
Ce programme répond oui si la deuxième partie du nombre commence par 0!!! (donc oui sur les 3 exemples précédents mais non à 222909)
(la fonction "lister" transforme 123 en [3,2,1] car, aujourd'hui, je programme tout avec "append")
Voila la fonction qui me tarabuste:
merci de vos conseils
F.D.
je vous soumets un petit programme python pour tester si les chiffres du début et de la fin d'un nombre sont égaux.
Exemples: 7744 oui, 222999 oui, 222099 non
Ce programme répond oui si la deuxième partie du nombre commence par 0!!! (donc oui sur les 3 exemples précédents mais non à 222909)
(la fonction "lister" transforme 123 en [3,2,1] car, aujourd'hui, je programme tout avec "append")
Voila la fonction qui me tarabuste:
def test_chiffres(n): test=False p=trunc(log(n,10))+1 pp=p/2 i=1 t=10**(pp) ok=True a=n%t L=lister(a) print(L) for k in L: for j in L: if (k!=j): ok=False if ok: test=True b=(n-a)/t L=lister(b) print(L) for k in L: for j in L: if (k!=j): test=False return test
merci de vos conseils
F.D.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je propose, dans le même style et avec les ensembles, en Python 3 :
Je teste si le début et la fin sont constitués d'un seul caractère.
Petite correction : j’avais oublié set.
-- Schnoebelen, Philippe
En discutant avec un collègue, il m'a indiqué ma grosse ânerie : "222099%1000=99 et non 099" ergo l'erreur, il faut traiter des string ou des listes (je m'astreins aux listes, j’adore conduire de nuit dans le brouillard tous feux éteints et les yeux bandés sur une route de montagne turque).
Merci encore.
F.D.
-- Schnoebelen, Philippe
avant d'étudier vos propositions plus en détail, je suis revenu à l'attaque. et ça ne marche toujours pas !!!
la fonction tc que vous avez proposée marche, en revanche, très bien.
Il me semble que mon erreur est dans les deux "for" finaux qui sont très mal réfléchis.
Merci beaucoup, je vais passer aux strings mes caleçons sont trop lâches !!!
F.D.
PS. Cher AD, j'aime beaucoup écrire "j'adÔre" pour faire une espèce de pastiche écrit de l'accent de mme la comtesse :-) merci de ta bienveillance et de ta patience
[Mettre une ' ' entre [ et i sinon, l'afficheur du forum le prend pour une bannière BBcode de mise en italique. AD]
Après, tu utilises des choses que mon interpréteur ne comprend pas : trunc, retourn.
Par ailleurs, quand tu calcules le développement décimal, ça ne semble pas indispensable de calculer le nombre de chiffres a priori. Avec ces remarques, on peut faire... PS : Fermeture d'une balise de code puis ajout d'une espace à [ i].
PS' : Aveu : la différence de syntaxe de "print" est une des raisons, peut-être la principale, qui me font préférer Python 2 à Python 3.
-- Schnoebelen, Philippe
trunc est dans le module math et permet de faire un entier d'un réel
retourn est ma version d'une fonction qui retourne une liste (elle existe mais je ne le savais pas)
il me paraît normal que "ok" change à chaque itération, c'est, en fait, un while que je devrais mettre : mais la solution avec les string est infiniment plus élégante. Je n'ai pas regardé celle de l'auteur et, en plus, le problème mathématique est relativement simple et ne nécessite guère la machine.
aabb=n² donc aabb est multiple de 121 et aabb divisé par 121 = ab avec a=b, il ne reste qu'à essayer, on trouve a=b=8 et le nombre est 7744
merci de vos réponses.
F.D.
[Mettre une ' ' entre [ et i sinon, l'afficheur du forum le prend pour une bannière BBcode de mise en italique. AD]