Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
vingt et un plus quatre
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

Zebulor
26-11-2019 10:03:42

Bonjour,
@Yoshi : ne prends pas du retard dans tes explications à cause de moi (entres autres ?). Des soucis d ordi ne m’arrangent pas les choses...

en relisant tout çà, le programme sur les suites de Fibonacci me parle davantage avec cette écriture :

Fibo1,Fibo2=1,1
print(Fibo2,end=" ")
for i in range(2,25):
    Fibo3=Fibo1+Fibo2
    Fibo1=Fibo2
    Fibo2=Fibo3
    print(Fibo3,end= " ")

Le premier terme prend la place du 2e terme, le deuxième celui du 3e. D'où le Fibo3 en codage au lieu du fibo initial..

yoshi
25-11-2019 10:52:06

Bonjour,

Je vois que j'ai été abandonné...
Alors

Solution définitive... sans boucle !

:
Voyez, l'opérateur des chaînes de caractère et des listes, possède un 3e paramètre:
print("Truc"[::-1]) donne curT

ph1="ESOPRERESTEICIETSEREPOSE"
print(ph1[::-1]==ph1)

renvoie

True

Ce print est à interpréter comme une question dont le résultat sera True ou False :
si je dis que ph1 lu à l'envers est égal à ph1, est-ce Vrai ou Faux ?

En ce qui concerne l'opérateur :
[début: fin: pas]
Quand je ne renseigne ni le début ni la fin, c'est Python qui, gérant seul le nombre de caractères,  détermine l'indice de fin, et par défaut, il prend 0 comme indice de début :

print ("ABCDEFGHIJKLMNOPQ"[::2])

renvoie

ACEGIKMOQ

ou encore

print ("ABCDEFGHIJKLMNOPQ"[::-2])

renvoie

QOMKIGECA

@+

yoshi
02-11-2019 12:29:09

Salut,

C'est juste mais ne correspond pas tout à fait à ce que j'attendais...
Je vais devoir détailler plus dans un post à part entière !
Programme "simple" ? court, oui, mais pas si simple...

Pas si simple, surtout pour quelqu'un qui n'a jamais programmé...
C'est d'autant plus méritoire

for i in range(22,-1,-1)
c'est la traduction de
for i in range(debut,fin,pas)

Et ici on a :
debut =22
fin = -1 (exclu) donc oui, Python s'arrête  à 0
pas = -1 si on ne spécifie pas qu'on va à l'envers, Python va noter que debut>fin et la boucle ne démarrera pas et pas de message d'erreur pour te le signaler...
En spécifiant pas =-1, l'analyse de Python va être qq ch comme :
une boucle for ?
ok
Est-elle correctement écrite ?
debut > fin ... pas correct, on ne peut pas créer les nombres de debut à fin=-1 sauf... si un pas négatif est spécifié
Y a-t-il un pas négatif ?
Oui.
ok, c'est bon.

Tant qu'on ne fait que compter, pas de souci, mais si le compte calcule les index de position des caractères d'une chaîne...
Notre chaîne comprend 23 lettres elles sont numérotées de 0 à 22...
Et pour rependre l'analogie des cases, si on peut écrire le nombre 23, on ne peut pas écrire par contre la lettre contenue dans la case n°23 puisque les cases étant numérotées de 0 à 22... la case n°23 n'existe pas : erreur, out of range...
Voilà pour la valeur à donner à debut.

La valeur à donner à fin serait en principe (puisqu'on compte de manière décroissante celle du plus petit numéro de case, soit 0.
Mais, la valeur donnée à fin étant toujours exclue, ici comme on va en décroissant 22, 21, 20... il faut donner à fin une valeur entière qui va plus loin et dans le même sens, donc -1, comme cela la boucle s'arrêtera à 0...

Tu as réussi à écrire sur une colonne en partant de la fin, sur une colonne à cause de l'absence de ,end=" " ou de ,end=""
C'est un détail, parce que ce n'était pas demandé.
Le but du jeu était de savoir si à l'endroit ou a l'envers on obtenait la même chaîne.

Pour ça, tu avais besoin  de :
- remplir une 2e chaîne ph2 avec les lettres de ph1 dans l'ordre inverse. La chaîne ph2, avant la boucle doit être déclarée vide : ph2="".
- ph2 étant remplie, tu dois demander à Python si ph1 et ph2, c'est la même chose.
   En maths, ça se traduit par ph1=ph2, en Python le "=" a le sens de mettre dedans... a=2 : je mets 2 dans a.
   Par contre, pour savoir si a est égal à 2, en Python, je dois doubler le = et utiliser ==, qui est l'opérateur de comparaison d'égalité.


a=3
print(a==2)

Traduction : écris-moi si a vaut 2
réponse : False
Par contre


a==3
print(a==6//2)

renvoie : True

Voilà pourquoi il fallait savoir extraire les lettre une par une à l'envers, avant de s'attaquer aux palindromes...

@+

[EDIT]
Quand tu sera au bout de la question 2. du palindrome, je te réserverai une petite surprise (en privé) que je ne mettrai même pas en spoiler : j'attendrai que mes deux compères soient au bout pour divulguer cette fois à tous la méthode en pur Python qui va surprendre tant c'est court, et qui mettra un point final à nos jeux sur les chaînes.
J'espère que, même si tu "tires la langue", tu y prends plaisir malgré tout...

Puisqu'il va y avoir une pause forcée (le temps qu'ils te rejoignent), ça me laissera le temps de te recauser crible...
On travaille beaucoup avec les boucles; c'est nécessaire et elles seront encore là pour parler des Listes et Dictionnaires et ensuite des fonctions classiques et aussi d'autres dites anonymes.
Après quoi, chacun pourra poursuivre tout seul sa progression, le gros travail de débroussaillage étant, pour moi, terminé...

LEG
02-11-2019 11:13:30

@ :

par contre pour la fin, j'ai raison

....tout dépend si on sait bien compris ...

car ce que j'ai voulu dire au point 2) suite au 18,0,-1;
si dans : range(17,0,-1): je ne risque pas d'avoir à la fin la lettre A.

exemple avec la première notation: (17,-1, -1): j'ai bien    E U Q S E T N A R B A D A C A R B A

mais avec ta notation en mettent 17 au lieu de 18 soit (17,0,-1) et ben : E U Q S E T N A R B A D A C A R B  le A ne peut y être; puisque son index est 0 donc il faut dans la "chaine" pour aller jusqu'au n° d'index 0,  taper -1

Ceci dit: je suis très loin d'être opérationnel , mais tes explications me permettent de comprendre certaine partie de ce que fait un programme ...""simple""


pour le palindrome :


ph1="ESOPERESTEICIETSEREPOSE"
ph2= ""
lg=len(ph1)
for idx in range( 22, -1,-1):
   print(ph1[idx])
 

résultat:
E
S
O
P
E
R
E
S
T
E
I
C
I
E
T
S
E
R
E
P
O
S
E

et len = 23

[EDIT]@yoshi
Sésolé, mon commentaire n'avait sa place dans ton post. Toutes mes excuses...

yoshi
02-11-2019 10:56:39

Re,

Erreur non volontaire de ma part. Si, j'y avais pensé, je l'aurais faite volontairement...
Bravo de l'avoir repérée, ça vaut dire que tu es opérationnel, par contre pour la fin, j'ai raison

Solution sans faute...

m="ABRACADABRANTESQUE"
for  element in range(17,-1,-1):
    print(m[element],end=" ") #  espace volontairement mis pour épeler le mot : je vous demandais end=""
 

-1 c'est la fin, etr la fin étrant exvlue Python s'arrête à 0 et
m[0], existe c'est A.
Voilà ce que donne l'exécution avec end=" " :
E U Q S E T N A R B A D A C A R B A
et si j'utilise end="" :
EUQSETNARBADACARBA

On passe au 1er cas de détection d'un palindrome

Si nécessaire, voilà le plan..

Après avoir enlevé les espaces de la phrase ESOPE RESTE ICI ET SE REPOSE, j'ai
ph1="ESOPERESTEICIETSEREPOSE"
1. Si c'est un palindrome, que je lise ph1 à l'endroit ou à l'envers,  je dois obtenir la même chaîne.
2. J'ai donc besoin d'une 2e chaine ph2 qui contiendra le mot lu à l'envers.
3. Je pars donc d'une 2e chaîne ph2 vide au départ que je vais remplir lettre après lettre avec chaque lettre de ph1 obtenue en allant du E final de REPOSE au E de ESOPE.
4. Lire ph1 à l'envers, ça c'était l'objet de l'exercice précédent.
5. La chaîne ph2 se remplit lettre à lettre. Comment ? C'est expliqué dans les posts précédents : 
    Supposons que ph1="LEG"  :  3 lettres, donc 3 tours de boucle.
    ph1="LEG"
    ph2=""
    ph2 = ph2 + ph1[2] ("G") --> on a donc ph2 = "G"
    ph2 = ph2 + ph1[1] ("E") --> on a donc ph2 = "GE"
    ph2 = ph2 + ph1[0] ("L") --> on a donc ph2 = "GEL"
    Mais ça, c'est sans boucle, pas grave  3 lettres seulement...
    Mais combien dans "ESOPERESTEICIETSEREPOSE"... On va les compter ?
    Nan... c'est Python qui va le faire lg=len(ph1) (len, de l'anglais length = longueur), soit lg = 23
5. Pour savoir si c'est le même mot, il faut demander à Python c'est le cas.
6. Pour cela il faut utiliser le comparateur d'égalité == et Python ne pourra répondre que True ou False
    Donc, j'amorce le code :
   


    ph1="ESOPERESTEICIETSEREPOSE"
    ph2= ""
    lg=len(ph1)
    for idx in range( ?, -1,-1): # ? est à remplacer par une expression algébrique utilisant lg
        ................................

    A compléter
    La boucle ne sert qu'a obtenir ph2
8. Comparer ph1 et ph2 ne doit se faire qu'une fois les 20 tours effectués, une fois sortis de la boucle (indentation !)

Programmer, c'est utiliser une langue étrangère avec peu de mots mais chaque mot, via des options, ayant des emplois différents mais voisins et penser d'une façon différente et ne pas aller trop vite...
Et tester, corriger, retester, recorriger...

Lorsque le programme sera au point, il vous suffira de remplacer ph1="ESOPERESTEICIETSEREPOSE",
par ph1="ETLAMARINEVAPAPAVENIRAMALTE"  (en bon français avec majuscules/minuscules et ponctuation : Et la marine va, papa, venir à Malte) puis de relancer votre programme et vous saurez immédiatement, sans efforts si ph1 est un palindrome

@+
[EDIT] correction faute d'orthographe.

LEG
02-11-2019 09:16:19

Salut:
@ : pourquoi tu as écrit ceci:

for element in range(18, 0,-1):
      print(m[element],end="") # m, c'est la boîte, [] c'est case et [element], c'est mon "case n° element"


(N-B : il manquera une lettre, à toi de rectifier.)

1) sachantt que le nombre d'éléments de la boîte contenant Abracadabrantesque est de 18,en comptant le 0, ce qui fait: que si on tape 18,0,-1 on serra out range...erreur , donc c'est 17 et non 18.

2) si je met 17,0,-1 et ben : de la fin ....> le début il me manquera la lettre A..c'est tout, je n'aurai que 17 n° d'index et l'index 0 = A représenté par -1 dans la chaine de 18 à -1ne serra affiché....

yoshi
01-11-2019 20:05:17

Re,

mais pourquoi doit on dans la fonction print de m du mot ABRA....pourquoi faut il mettre element dans les crochets.

Un stock de boîtes contient des mots différents dont les lettres sont réparties dans des cases numérotées en partant de 0. Tu connais la longueur des mots... tu choisis un n° de boîte, boîte à laquelle tu devras donner un nom pour éviter les confusions.
Ici la boîte choisie a été baptisée m : elle contient le mot ABRACADABRANTESQUE et il est écrit longueur : 18.
Tu n'as pas accès à la boîte, tu as choisi sur un écran...
L'ordinateur répond à la voix et peut afficher à l'écran le contenu de la "case n° element de la boîte m"...
Si tu te contentes de demander "n° element", l'ordi affiche à l'écran le n° element.
Si tu demandes n° 18 : s'affiche 18... mais si tu demandes le contenu de "la case n° 18 de la boîte m", la machine annonce "case introuvable", efface tout et s'arrête : tout est à refaire...
- si tu veux voir à l'écran les numéros de 18 à 0 (rappel 0 exclu, Python s'arrête à 1), tu annonces :
  "n° element pour element de 18 à 0" (rappel : 0 exclu), soit  :
- si tu veux que s'affiche le contenu de chaque case n° element de la boîte m , il faut demander expressément le contenu de la "case n° element de la boîte m" avec element allant du dernier numéro jusqu'au premier...
  soit :
   


  for element in range(18, 0,-1):
      print(m[element],end="") # m, c'est la boîte, [] c'est case et [element], c'est mon "case n° element"
 

(N-B : il manquera une lettre, à toi de rectifier.)
Si jécris
sac="SAKIGAWA"
et que je veux la 5e lettre, c'est à dire la n°4, je n'écris pas


sac="SAKIGAWA"
no=4
print(no)

qui affiche 4

mais


sac="SAKIGAWA"
print(sac[4])
 

qui affiche G.

@+

LEG
01-11-2019 18:38:14

Python je vais l'exploser, heureusement que mon algorithme et Goldbach c'était moins: EUQSETNARBADACARBA


m ="ABRACADABRANTESQUE"
for element in range(17,-1,-1):
     print (m[element],end="")
 

les elements sont les index, ok : de 17 vers 1 par la boucle range;

mais pourquoi doit on dans la fonction print de m du mot ABRA....pourquoi faut il mettre element dans les crochets..
pour que cela fonctionne , autrement dit il faut lui rappeler d'écrire à l'envers en réutilisant element

car dans la fonction print, si je ne met pas element entre crochets et que je garde uniquement m, cet abruti il va m'écrire 18 fois abraca.....tesque à la suite

Et en plus tu as joué sur les mot dans ta réponse ci dessus ....il te manque juste ....... mais je n'y ai pas fait attention, c'est en regardant maintenant ta réponse que je vois que tu as dû te fendre la gueule.... 

Bon maintenant je vais me faire une omelette ...
@+
bonne soirée Yoshi.

yoshi
01-11-2019 17:18:05

Ave,

Tu touches au but.
Il ne te manque plus qu'un... élément !
Tu l'as fait avec des nombres !

Il te reste à passer des nombres aux lettres...

Tu as testé :


m ="ABRACADABRANTESQUE"
adjectif_Yoshi =m
for adjectif_Yoshi in range (0,18) :
     print (adjectif_Yoshi,end= "")

1. Tu as oublié que le typage des variables est un typage dynamique...
    Regarde ça :

   
    mot="BOA"
    print(mot)

    Tu obtiens : BOA
    Je reprends et j'ajoute une autre variable truc:

   
    mot="BOA"
    print("mot =",mot)
    truc =mot
    print("truc =",truc)
 

    Tu obtiens :
    mot = BOA
    truc = BOA

    Elle sert à quoi la variable truc puisqu'elle contient aussi BOA ? C'est juste une copie de la variable mot...
    Et maintenant que fais-tu ?
    Mais ça (et j'ajoute un petit qq ch en plus pour te montrer, et j'abrège l'énumération) :

   
    mot="BOA"
    print"mot =",mot)
    truc =mot
    print("truc =",truc)
    for truc in range(18, 16,-3):
        print(truc =", truc)
 

Ce qui donne :

mot = BOA
    truc = BOA
    truc = 18
    truc = 17

Recommence la même chose uniquement en écrivant "Yoshi" à la place de "BOA" : mot ="Yoshi" dans le code ci-dessus :

   
    mot="Yoshi"
    print"mot =",mot)
    truc =mot
    print("truc =",truc)
    for truc in range(18, 16,-3):
        print(truc =", truc)
 

Ce qui donne :

mot = Yoshi
    truc = Yoshi
    truc = 18
    truc = 17

Tu commences à comprendre ?

Alors, tu as fait :


m ="ABRACADABRANTESQUE"
adjectif_Yoshi =m
for adjectif_Yoshi in range (18,-1,-1)) :
     print (adjectif_Yoshi,end= " ")

qui te donne
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Si au lieu de end=" ", tu écris end="" :
1817161514131211109876543210
Rageant, s'pas ?

Tiens, supprimons la 2e ligne :


m ="ABRACADABRANTESQUE"
for adjectif_Yoshi in range (18,-1,-1) :
     print (adjectif_Yoshi,end= "")

et tu obtiens :
1817161514131211109876543210 : la même chose...
A quoi a servi d'écrire adjectif_Yoshi = m ?
A rien !
Pourquoi ?
juste avant ta boucle,  adjectif_Yoshi contenait la chaine de caractères "ABRACADABRANTESQUE"
Puis tu déclares la boucle :

for adjectif_Yoshi in range (18,-1,-1):

Qui veut dire quoi  en français ?
Mais ceci : Pour adjectif_Yoshi allant de 18 à -1 (exclu)

Et alors ?
Sur la ligne 2, tu écris que adjectif_Yoshi ="ABRACADABRANTESQUE", c'est une chaîne.
Sur la ligne 3, tu écris que adjectif_Yoshi est un nombre pris entre 18 et -1 (exclu)...
C'est normal que l'affichage donne des nombres !
D'une ligne à la suivante tu as changé le type de adjectif_Yoshi : il est passé de str (string) à int (integer)..

Reprenons :
Ça, tu as su le faire :


for element in range (18,-1,-1):
     print (element,end= " ")

Résultat : 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 

Que faire ?
1. Supprimer les espaces en utilisant end="" :


    for element in range (18,-1,-1):
        print (element,end= " ")

    Résultat : 1817161514131211109876543210

2. On rajoute m="ABRACADABRANTESQUE" :


    m="ABRACADABRANTESQUE"
    for element in range (18,-1,-1):
        print (element,end= " ")

    Résultat : 1817161514131211109876543210
    C'est normal, ici m ne sert à rien, puisqu'on ne s'en sert pas..
    C'est dans la boucle que ça se passe maintenant...
    Parce que element est ici plus qu'un simple compte-tours, c'est un calculateur d'index...
    Tout ce dont tu as besoin,  c'est à partir d'un index donné, comment extraire de la chaîne m la lettre dont la position est donnée par cet index...
    Et ce comment faire est expliqué en #22, entre le début du post et la première ligne bleue(exclue)

La programmation, c'est douloureux mais quel pied quand on on arrive à plier la machine à notre volonté !!!

Courage, tu touches au but !

@+

LEG
01-11-2019 14:56:50

ok à l'endroit j'y suis arrivé
mais tu as demandé d'écrire à l'envers en partant de m="ABRACADABRANTESQUE"
et lorsque je fais ce que tu m'as demandé de regarder au début je l'avais fait mais ...Nada...!

voila ce que j'avais essayé entre autre :

m ="ABRACADABRANTESQUE"
adjectif_Yoshi =m
for adjectif_Yoshi in range (0,18) :
     print (adjectif_Yoshi,end= "")

résultat
01234567891011121314151617  les n° de lettres....? et à l'endroit


pas de lettres à l'envers ni les index et avec un espace : end=" "

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

alors la solution pour écrire à l'envers ??? sinon le "Boa" je vais le bouffer à la broche....

même en mettant element à la place de adjectif_Yoshi dans la boucle range , j'ai le mot écrit à l'endroit....

mais c'est vrai que  :


m ="ABRACADABRANTESQUE"
debut,fin,pas=18,-1,-1
for element in range (18,-1,-1):
     print (element,end= " ")
 

résultat à l'envers ok:
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

yoshi
01-11-2019 10:12:42

Re,

Je corrige et explique les fautes

1. for element in range (m(17,0,-1)):
    Niet !
    Ici : range(17,-1,-1):
    Là, tu mélangeais 2 techniques
   


    m ="ABRACADABRANTESQUE"
    for element in m :
         print(element,end= " ")

    qui parcourait le mot lettre après lettre en ajoutant une espace après chaque lettre du début à la fin...
    Et nous, on n'avait pas à soucier de l'index, Python gérait ça tout seul. Résultat :
    A B R A C A D A B R A N T E S Q U E
    Si on ne veut pas d'espace mais, par ex, "_$£" à la place (ou toute autre chose) :
   


    m ="ABRACADABRANTESQUE"
    for element in m :
         print(element,end= "_$£")

    Résultat :
    A_$£B_$£R_$£A_$£C_$£A_$£D_$£A_$£B_$£R_$£A_$£N_$£T_$£E_$£S_$£Q_$£U_$£E_$£
    Pour coller les lettres, garder un end= vide et le vide c'est "" (2 guillemets anglais accolés)
       


    m ="ABRACADABRANTESQUE"
    for element in m :
         print(element,end= "'")

    Résultat : ABRACADABRANTESQUE

   2e technique pour ton mélange : avec les nos d'index :
   


    m ="ABRACADABRANTESQUE"
    for idx  in range(0,18) :  # Rappel : 18 exclu, Python s'arrête à 17
         print (m[idx],end= "*")

    qui te donne :
    A*B*R*A*C*A*D*A*B*R*A*N*T*E*S*Q*U*E*
    Si j'écris end="" au lieu de end="*", on retrouve : ABRACADABRANTESQUE

--> range(0,18) fabrique ici l'un après l'autre les nombres de 0 à 17 inclus : on peut utiliser simplement range(18) puisqu'on démarre à 0...
      Toi, tu as demandé range(m(17,0,-1))...
--> m(17,0,-1)
      Il te suffirait de demander simplement print(m(17,0,-1)) pour déclencher une erreur..
      En effet, m est une chaîne de lettres et :
      1. Déjà, l'opérateur de chaîne est [] et non ()
      2. Le séparateur y est : (deux points)
      3. Si tu utilises m[17:0:-1] tu n'obtiendras pas des nombres, mais des lettres (qui ne sont même pas des variables)
      4. En conséquence comme dans range(), il faut des valeurs numériques, ou de variables contenant des valeurs numériques : boum !

En résumé, la syntaxe correcte  pour afficher à l'endroit une lettre après l'autre, en utilisant les index et sans espace est :


m ="ABRACADABRANTESQUE"
for idx  in range(0,18) :  # Rappel : 18 exclu, Python s'arrête à 17
     print (m[idx],end= "*")
 

syntaxe de range() : range (debut, fin, pas)
Maintenant yapluka retoucher le range pour avoir le bon index de debut, le bon index de fin et le bon pas...
Et après ça baigne...

@+

LEG
01-11-2019 09:15:26

avec les nombres je l'avais essayé mais avec abracadabra = NADA..!

voila ce que j'ai essayé dans tous les sens :

m="ABRACADABRANTESQUE"
for element in range (m(17,0,-1)):
    print(element,end=" ")

résultat

Traceback (most recent call last):
  , line 2, in <module>
    for element in range (m(17,0,-1)):
TypeError: 'str' object is not callable
>>>

déjà il me répond en anglais ....! je vois que 'str' donc string est inaproprié avec des lettres...et ce n'est pas le bon module...enfin je crois...

yoshi
01-11-2019 08:20:05

Salut,


Rooohhhh... pourquoi abandonner si vite ?
Tout ce dont tu as besoin a déjà été vu, il faut seulement recoller les morceaux...

Primo :
Relire le post #1...
J'y écrivais :

La boucle avec fin se déroule jusqu'à fin-1 !
On peut afficher les nombres de 1 à 9 en choisissant 1 pour debut, 10 pour fin, de 0 à 9 soit en spécifiant 0 pour debut, soit en écrivant seulement range(10)
on peut afficher ces mêmes nombres en décroissant avec fin<debut et pas =-1:


for i in range(9,0,-1):
    print(i)

Sans surprise, on aura obtenu les nombres de 9 à... 1 !
Pour avoir le 0, il faut pousser fin jusqu'à -1 :


for i in range(9,-1,-1):
    print(i)
Secondo. Coup de couce n°2

- Le problème technique de la boucle décroissante est réglé ci-dessus
- Rappel : la longueur de la chaîne "ABRACADABRANTESQUE" est 18
  Python est tolérant, mais  ce serait donner unr mauvaise habitude d'utiliser un mot-clé comme compteur :
  employer i, j, k ... no... ce que tu veux
- Pour accéder à cette dernière lettre on tape print(m[17]) et pour la première print(m[0])...
- Tu as donc le début : 17 .
   ET la fin ?
   Premier réflexe : 0... Tu testes : la boucle s'arrête à 1..
   La solution pour aller jusqu'à m[0] se trouve ci-dessus, dans le rappel du post #1...
- Pour écrire sur la même ligne, préciser dans le print : , end=...
  Si tu utilises print(m[no],end=" "), tu vas être sur la même ligne mais avec une espace entre les lettres...
  Sans surprise, la solution est donc  de ne pas mettre d'espace, donc de mettre du... vide : print(m[index],end="")

Voilà !
Yapluka emboîter les morceaux du puzzle

@+

LEG
01-11-2019 05:35:19

re
je n'avais pas compris qu'il fallait faire une boucle pour écrire a l'envers de la fin au début ...avec m=............
je ne sais absolument comment m'y prendre ni pour le palindrome ...Donc je laisse place aux jeunes...

yoshi
31-10-2019 11:29:16

Salut hombre !

je viens de tester et échec.....!

Tu veux parler du test proposé ? Alors, c'est intéressant, on va passer au débogage.
Si oui,
1. As-tu obtenu l'affichage d'un quelconque résultat ? Si oui lequel ?
2. Si tu n'as obtenu qu'un message d'erreur, donne ce message d'erreur que je l'analyse...

Pour LEG ou ceux qui auront testé sans succès

Connaissances à mobiliser
1. Savoir utiliser une boucle
2. Savoir que, entre l'index 0 et l'index 17, puisque le mot a 18 lettres (0 à 17 ça fait bien 18), la lettre placée à l'index donné est obtenue par m[index]
3. Savoir utiliser une boucle allant de la fin au début...
4. Savoir afficher plusieurs éléments sur une même ligne, avec une espace entre chaque... ou rien du tout.

Rappel : Un débutant (ou même qq de chevronné à son niveau)
- doit se faire à l'idée que les ratés seront monnaie courante
- doit penser, s'il est présent, à exploiter le message d'erreur qui  dit ce qu'est l'erreur
- sans message d'erreur, placer des print() bien choisis pour savoir où ce qui se passe n'est pas ce qui est attendu (que croyez-vous que je fasse ?) ...

Sans Python à la maison,
- taper votre code dans un éditeur de texte tout bête
- faire attention à l'indentation (compter les appuis sur la barre espace)
- copier votre code
- et pour le tester :
  *  le coller ici : https://pynative.com/online-python-code … thon-code/
  *  cliquer sur le groupe des 2 triangles poine à droite et pointe en bas

@+

Pied de page des forums