Algorithme qui place des étoiles entre chaque caractères
Résolu/Fermé
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
-
Modifié le 20 oct. 2019 à 20:36
ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019 - 21 oct. 2019 à 16:49
ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019 - 21 oct. 2019 à 16:49
A voir également:
- Algorithme qui place des étoiles entre chaque caractères
- Caractères ascii - Guide
- Caractères spéciaux clavier azerty - Guide
- Caractères spéciaux - Guide
- Pourquoi instagram prend autant de place - Forum Instagram
- Caractères spéciaux mac - Guide
6 réponses
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
Modifié le 20 oct. 2019 à 20:37
Modifié le 20 oct. 2019 à 20:37
Bonjour,
Pense à utiliser les balises pour la colorisation du texte !
Tu devrais tester l'index par rapport à la longueur de la chaine, et dans le cas du dernier caractère, faire le print sans *
Cdlt
Pense à utiliser les balises pour la colorisation du texte !
whitetu es sur ?
Tu devrais tester l'index par rapport à la longueur de la chaine, et dans le cas du dernier caractère, faire le print sans *
Cdlt
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
20 oct. 2019 à 20:47
20 oct. 2019 à 20:47
Bonjour
Il suffit de faire ta boucle sur "nombre de caractères - 1 "
Il suffit de faire ta boucle sur "nombre de caractères - 1 "
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
20 oct. 2019 à 20:49
20 oct. 2019 à 20:49
Bonjour,
J'ai déjà essayé ce que tu me conseilles mais cela m'écrit : F*r*e* au lieu de F*r*e*d si j'ai bien compris ce que tu me dis.
J'ai déjà essayé ce que tu me conseilles mais cela m'écrit : F*r*e* au lieu de F*r*e*d si j'ai bien compris ce que tu me dis.
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
>
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
Modifié le 20 oct. 2019 à 20:55
Modifié le 20 oct. 2019 à 20:55
laisse la boucle sur len, mais compare indice à len - 1 pour le dernier caractère
une boucle for à la place de while t'évite de gérer l'indice
et pour le code juste là, au dessus de la saisie de ton message l'icone <>^ qui permet de choisir le type du code, python
une boucle for à la place de while t'évite de gérer l'indice
et pour le code juste là, au dessus de la saisie de ton message l'icone <>^ qui permet de choisir le type du code, python
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
20 oct. 2019 à 20:59
20 oct. 2019 à 20:59
Oui, et il ne te reste plus qu'à afficher le dernier caractère une fois la boucle terminée
Il y a d'autres façons de réaliser cet exo.
Par exemple,
Tu peux faire un IF dans ta boucle pour savoir si tu es au dernier caractère ou non... et en fonction.. écrire ton * ou pas.
Sinon tu dois également pouvoir utiliser un SPLIT sur la chaine
Puis un join
https://www.w3schools.com/python/ref_string_split.asp
https://www.w3schools.com/python/ref_string_join.asp
chaine[len(chaine)-1]
Il y a d'autres façons de réaliser cet exo.
Par exemple,
Tu peux faire un IF dans ta boucle pour savoir si tu es au dernier caractère ou non... et en fonction.. écrire ton * ou pas.
Sinon tu dois également pouvoir utiliser un SPLIT sur la chaine
Puis un join
https://www.w3schools.com/python/ref_string_split.asp
https://www.w3schools.com/python/ref_string_join.asp
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
21 oct. 2019 à 10:20
21 oct. 2019 à 10:20
Alors tu en es où ?
Moi j'ai 2 solutions, une avec un if dans la boucle, et la seconde, que je préfère, suggérée par jordane45, la boucle sur n-1 caractères et en sortie de boucle traitement du dernier caractère.
Comme sur ton précédent exercice tu sembles partir d'une bonne logique mais avoir du mal à finaliser. Généralement quand on écrit un programme, on arrive à le faire tourner dans sa tête, on "voit" l'instruction s'exécuter, on traite la boucle, ... Aujourd'hui avec un ordinateur et un écran c'est facile. Tu devrais à chaque pas mettre des print pour voir le contenu de chaque variable, de chaque champ, presque de chaque instruction pour voir la trace complète de l'exécution.
Moi j'ai 2 solutions, une avec un if dans la boucle, et la seconde, que je préfère, suggérée par jordane45, la boucle sur n-1 caractères et en sortie de boucle traitement du dernier caractère.
Comme sur ton précédent exercice tu sembles partir d'une bonne logique mais avoir du mal à finaliser. Généralement quand on écrit un programme, on arrive à le faire tourner dans sa tête, on "voit" l'instruction s'exécuter, on traite la boucle, ... Aujourd'hui avec un ordinateur et un écran c'est facile. Tu devrais à chaque pas mettre des print pour voir le contenu de chaque variable, de chaque champ, presque de chaque instruction pour voir la trace complète de l'exécution.
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
21 oct. 2019 à 10:49
21 oct. 2019 à 10:49
J'ai une solution avec if:
Le problème est qu'il me marque une erreur du type : string indices must be integers, a la ligne :
def chaine_etoilee(chaine):
indice = 0
for indice in chaine:
if indice != len(chaine):
print(chaîne[indice] + "*", end="")
indice = indice + 1
else :
print(chaine[indice], end="")
Le problème est qu'il me marque une erreur du type : string indices must be integers, a la ligne :
print(chaine[indice] +"*", end="")
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
>
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
Modifié le 21 oct. 2019 à 10:57
Modifié le 21 oct. 2019 à 10:57
je t'avais indiqué que l'interet du for, c'est que c'est lui qui gère l'indice de la boucle. Donc il ne doit être ni initialisé, ni incrémenté
pour le message d'erreur, comme indiqué plus haut, sur un soucis de ce type, avant la ligne en erreur tu devrais afficher l'indice et tu devrais avoir une surprise sur son contenu
pour la colorisation du code tu y es presque ;-) à coté de <> il y a une liste, pour selectionner le code : python
pour le message d'erreur, comme indiqué plus haut, sur un soucis de ce type, avant la ligne en erreur tu devrais afficher l'indice et tu devrais avoir une surprise sur son contenu
pour la colorisation du code tu y es presque ;-) à coté de <> il y a une liste, pour selectionner le code : python
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
21 oct. 2019 à 10:58
21 oct. 2019 à 10:58
Très bien merci, je vais essayer de retravailler ma boucle.
Sinon est-ce que la solution de jordane45 est elle plus simple ?
Sinon est-ce que la solution de jordane45 est elle plus simple ?
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
>
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
21 oct. 2019 à 11:07
21 oct. 2019 à 11:07
elle évite un if, donc le code est plus léger, plus élégant. Plus subtile aussi, avec le if à la lecture on voit bien que le dernier caractère doit être traité différemment. Sans, ton cerveau doit faire plus de travail, du reverse engineering
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
21 oct. 2019 à 11:20
21 oct. 2019 à 11:20
Merci !
J'ai enfin trouvé la solution, vous me l'aviez donné des le début et je n'avais rien vu...
Mon programme est donc le suivant :
Pour la colorisation du texte j'avais fais cette manipulation mais je cela n'avais pas marché....
J'ai enfin trouvé la solution, vous me l'aviez donné des le début et je n'avais rien vu...
Mon programme est donc le suivant :
def chaine_etoilee(chaine): for i in range(len(chaine)-1): print(chaine[i] + "*", end ="") print(chaine[len(chaine)]-1, end="")
Pour la colorisation du texte j'avais fais cette manipulation mais je cela n'avais pas marché....
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
20 oct. 2019 à 21:00
20 oct. 2019 à 21:00
Donc tu voudrais que je fasse (jee pee)
def chaine_etoilee(chaine):
indice = 0
for indice in (len(chaine)-1):
print("chaine[indice] + "*", end = "")
indice = indice + 1
def chaine_etoilee(chaine):
indice = 0
for indice in (len(chaine)-1):
print("chaine[indice] + "*", end = "")
indice = indice + 1
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
Modifié le 20 oct. 2019 à 21:18
Modifié le 20 oct. 2019 à 21:18
pour la colorisation voir : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Plus en fin une ligne comme indiqué par jordane45
def chaine_etoilee(chaine): for i in range(len(chaine)-1): print(chaine[i] + "*", end="")
Plus en fin une ligne comme indiqué par jordane45
print(chaine[len(chaine)-1], end="")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
20 oct. 2019 à 21:19
20 oct. 2019 à 21:19
Super, merci Jordan 45 je n'avais pas pensé au "if" !
Mais mon problème est que lorsque j'effectue la commande :print(chaine[indice] + "*",end = ""), il me marque dans la console "string indices must be integers "
Mais mon problème est que lorsque j'effectue la commande :print(chaine[indice] + "*",end = ""), il me marque dans la console "string indices must be integers "
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
20 oct. 2019 à 21:21
20 oct. 2019 à 21:21
il faut se rappeler qu'une chaine de caractère démarre à l'indice 0, donc pour une chaine de len=4 il faut utiliser, [0,1,2,3]
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
20 oct. 2019 à 21:24
20 oct. 2019 à 21:24
Oui c'est donc pour cela que j'initialise "indice = 0"
jee pee
Messages postés
40470
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 novembre 2024
9 427
20 oct. 2019 à 21:25
20 oct. 2019 à 21:25
là tu as toutes les billes, il faut juste que tu les assembles en faisant des tests
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
20 oct. 2019 à 21:26
20 oct. 2019 à 21:26
Desole mais je n'ai pas compris ce que tu souhaites me dire jee pee
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
ledebutantenpython
Messages postés
48
Date d'inscription
mercredi 16 octobre 2019
Statut
Membre
Dernière intervention
22 octobre 2019
20 oct. 2019 à 22:22
20 oct. 2019 à 22:22
Je t'ai tout ecrit..
Si tu ne sais pas me relire...ça va devenir compliqué
Si tu ne sais pas me relire...ça va devenir compliqué
20 oct. 2019 à 20:41
Concernant les balises pour la coloration du texte je ne vois pas de quoi tu parles.
Pour le dernier caractères je ne vois pas trop comment l'écrire sans le "*"...
Cdlt