Un jean-python pour m'aider ?

Alcorak9
2021-08-19 23:40:23

je prépare mes cours pour l'année pro et l'année dernière on avait un exo que j'avais pas réussi a faire:
donc en gros je dois faire un programme qui transforme:
"bbbooonnnjjjooouuurrr" -> "bonjour"
et je sais pas trop comment m'y prendre si vous avez des pistes !
PS: oui je débute

Alcorak9
2021-08-19 23:45:43

personne ?

zizidifforme2
2021-08-19 23:47:04

J'ai rien compris à ton exo

waist_of_time
2021-08-19 23:48:46

Boucle où tu compares un indice à son suivant, ternaire sur l'égalité et tu l'ajoutes dans la string finale qu'en cas de différent ?

Mais ça réglerait pas le souci pour les mots a double consonne genre :(

Alcorak9
2021-08-19 23:51:18

Le 19 août 2021 à 23:47:04 :
J'ai rien compris à ton exo

en gros j'ai un texte où toutes les lettre sont en triples et je dois faire revenir le texte en normal comme dans l'exemple que j'ai dit

Alcorak9
2021-08-19 23:58:20

up ?

backbreakers1
2021-08-30 00:19:30

Salut, je peux te proposer une réponse:

def single(string):
return "".join([string[i] for i in range(len(string)) if not(i%3)])
In [10]: single("bbbooonnnjjjooouuurrr")
Out[10]: 'bonjour'

C'est de la bruteforce mais vu que ton mot en entrée a toujours les lettres en 3 fois ça marche.

okhe2000
2021-08-30 00:23:20

str = "bbbjj..."
while any(str.count(c)>1 for c in str):
for c in str:
if str.count(c) > 1:
str = str.replace(c*2, c)
break

abatou
2021-08-30 00:25:51

En gros un programme qui supprime les doublons ?

Tu utilises la fonction list() qui transforme ta string en list

Puis tu utilises set() qui rend les données d'une list unique

puis tu utilises join() qui te redonne une string

ça prend 3 lignes

okhe2000
2021-08-30 00:27:12

def next_repeat(str):
last = str[0]
for pos,char in enumerate(str):
if last == char: return pos-1
last = char
return -1

def del_repeat(str):
while (pos:=next_repeat(str)) != -1:
del str[pos]

okhe2000
2021-08-30 00:27:49

Le 30 août 2021 à 00:27:12 :
def next_repeat(str):
last = str[0]
for pos,char in enumerate(str):
if last == char: return pos-1
last = char
return -1

def del_repeat(str):
while (pos:=next_repeat(str)) != -1:
del str[pos]

et ça tu peut le faite dans toutes les langues

backbreakers1
2021-08-30 00:27:51

Le 30 août 2021 à 00:25:51 :
En gros un programme qui supprime les doublons ?

Tu utilises la fonction list() qui transforme ta string en list

Puis tu utilises set() qui rend les données d'une list unique

puis tu utilises join() qui te redonne une string

ça prend 3 lignes

Marche pas si une lettre se répète dans le mot de base

kabatso
2021-08-30 00:29:41

Le 30 août 2021 à 00:27:51 :

Le 30 août 2021 à 00:25:51 :
En gros un programme qui supprime les doublons ?

Tu utilises la fonction list() qui transforme ta string en list

Puis tu utilises set() qui rend les données d'une list unique

puis tu utilises join() qui te redonne une string

ça prend 3 lignes

Marche pas si une lettre se répète dans le mot de base

Ah oui effectivement

backbreakers1
2021-08-30 00:30:42

Le 30 août 2021 à 00:29:41 :

Le 30 août 2021 à 00:27:51 :

Le 30 août 2021 à 00:25:51 :
En gros un programme qui supprime les doublons ?

Tu utilises la fonction list() qui transforme ta string en list

Puis tu utilises set() qui rend les données d'une list unique

puis tu utilises join() qui te redonne une string

ça prend 3 lignes

Marche pas si une lettre se répète dans le mot de base

Ah oui effectivement

J'étais parti sur le même principe avec un dict mais quand j'ai vu que ça me donnait bonjur et pas bonjour j'ai abandonné :rire:

Marmaronette
2021-08-30 00:31:12

Le 30 août 2021 à 00:27:51 :

Le 30 août 2021 à 00:25:51 :
En gros un programme qui supprime les doublons ?

Tu utilises la fonction list() qui transforme ta string en list

Puis tu utilises set() qui rend les données d'une list unique

puis tu utilises join() qui te redonne une string

ça prend 3 lignes

Marche pas si une lettre se répète dans le mot de base

Et le tien marche pas si une lettre se répète plus de 3 fois, le problème est sous spécifié on peut pas y faire grand chose

backbreakers1
2021-08-30 00:32:34

Le 30 août 2021 à 00:31:12 :

Le 30 août 2021 à 00:27:51 :

Le 30 août 2021 à 00:25:51 :
En gros un programme qui supprime les doublons ?

Tu utilises la fonction list() qui transforme ta string en list

Puis tu utilises set() qui rend les données d'une list unique

puis tu utilises join() qui te redonne une string

ça prend 3 lignes

Marche pas si une lettre se répète dans le mot de base

Et le tien marche pas si une lettre se répète plus de 3 fois, le problème est sous spécifié on peut pas y faire grand chose

L'op a spécifié que les lettres étaient toujours en triple

Marmaronette
2021-08-30 00:39:31

Le 30 août 2021 à 00:32:34 :

Le 30 août 2021 à 00:31:12 :

Le 30 août 2021 à 00:27:51 :

Le 30 août 2021 à 00:25:51 :
En gros un programme qui supprime les doublons ?

Tu utilises la fonction list() qui transforme ta string en list

Puis tu utilises set() qui rend les données d'une list unique

puis tu utilises join() qui te redonne une string

ça prend 3 lignes

Marche pas si une lettre se répète dans le mot de base

Et le tien marche pas si une lettre se répète plus de 3 fois, le problème est sous spécifié on peut pas y faire grand chose

L'op a spécifié que les lettres étaient toujours en triple

exa exa j'avais pas lu si loin

Azerban
2021-08-30 14:39:37

def remove_duplicates(word):
new_word = ""
for letter in word:
if len(new_word) == 0:
new_word += letter
elif letter != new_word[-1]:
new_word += letter
return new_word

remove_duplicates("bbbbbbbooooonjjjooouuurrr lllleeesssssss aaaaaammmmiiiissss !!!!")

Retourne :

'bonjour les amis !'

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    ⚠️ Les archives de novembre sont désormais disponibles.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.