Problème création programme 2nd option ICN
Fermé
TheGameKiller
Messages postés
10
Date d'inscription
mercredi 19 décembre 2018
Statut
Membre
Dernière intervention
19 décembre 2020
-
Modifié le 19 déc. 2018 à 13:55
TheGameKiller Messages postés 10 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 19 décembre 2020 - 19 janv. 2019 à 19:39
TheGameKiller Messages postés 10 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 19 décembre 2020 - 19 janv. 2019 à 19:39
A voir également:
- Problème création programme 2nd option ICN
- Creation compte gmail - Guide
- Création compte google - Guide
- Programme demarrage windows 10 - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création site web - Guide
4 réponses
Bonjour.
str propose une méthode permettant de remplacer certains caractères par d'autres, str.translate, celle-ci s'appuyant sur une table de translation devant être crée avec str.maketrans.
L'idée pour toi serait de faire la même chose en définissant une table pour convertir tel caractère par tel autre caractère.
str propose une méthode permettant de remplacer certains caractères par d'autres, str.translate, celle-ci s'appuyant sur une table de translation devant être crée avec str.maketrans.
>>> table_encode = str.maketrans('abcdefghojklmnopqrstuvwxyz', 'bcdefghojklmnopqrstuvwxyza') >>> table_decode = str.maketrans('bcdefghojklmnopqrstuvwxyza', 'abcdefghojklmnopqrstuvwxyz') >>> s = 'salut ! comment vas-tu ?' >>> s_encode = s.translate(table_encode) >>> s_encode 'tbmvu ! dpnnfou wbt-uv ?' >>> s_decode = s_encode.translate(table_decode) >>> s_decode 'salut ! comment vas-tu ?'
L'idée pour toi serait de faire la même chose en définissant une table pour convertir tel caractère par tel autre caractère.
table = ('abcdefghojklmnopqrstuvwxyz', 'bcdefghojklmnopqrstuvwxyza') def encode(char): i = table[0].find(char) # str.find retourne -1 si le caractère n'est pas dans la chaîne if i != -1: char = table[1][i] return char def decode(char): i = table[1].find(char) if i != -1: char = table[0][i] return char string = input('words ? ') encoded_string = ''.join(encode(char) for char in string) print(encoded_string) decoded_string = ''.join(decode(char) for char in encoded_string) print(decoded_string)
Jithel
Messages postés
843
Date d'inscription
mercredi 20 juin 2018
Statut
Membre
Dernière intervention
31 août 2021
171
19 déc. 2018 à 14:10
19 déc. 2018 à 14:10
Tu ne peux pas appliquer la méthode pop sur une chaîne de caractère. Transforme ton mot d'entrée en liste avant d'utiliser pop :
liste = list(liste) # penser à renommer liste, c'est assez illisible
TheGameKiller
Messages postés
10
Date d'inscription
mercredi 19 décembre 2018
Statut
Membre
Dernière intervention
19 décembre 2020
20 déc. 2018 à 18:31
20 déc. 2018 à 18:31
ok, merci
TheGameKiller
Messages postés
10
Date d'inscription
mercredi 19 décembre 2018
Statut
Membre
Dernière intervention
19 décembre 2020
17 janv. 2019 à 20:37
17 janv. 2019 à 20:37
bonjour j'ai encore un petit problème je ne peut modifier qu'une lettre à la fois.
voila mon programe:
# -*- coding:utf-8 -*-"
#programme qui cript un texte et retourne le texte cripté
a=str(input("veillez saisir mot, s'il vous plait:"))
A=[a]
C=len(A)
B=A.pop(0)
for i in range (0,C):
if B=="a":
print ("z")
if B=="b":
print ("y")
if B=="c":
print ("x")
if B=="d":
print("w")
if B=="e":
print ("v")
if B=="f":
print ("u")
ect...
voila mon programe:
# -*- coding:utf-8 -*-"
#programme qui cript un texte et retourne le texte cripté
a=str(input("veillez saisir mot, s'il vous plait:"))
A=[a]
C=len(A)
B=A.pop(0)
for i in range (0,C):
if B=="a":
print ("z")
if B=="b":
print ("y")
if B=="c":
print ("x")
if B=="d":
print("w")
if B=="e":
print ("v")
if B=="f":
print ("u")
ect...
Jithel
Messages postés
843
Date d'inscription
mercredi 20 juin 2018
Statut
Membre
Dernière intervention
31 août 2021
171
17 janv. 2019 à 22:54
17 janv. 2019 à 22:54
Normal, la variable B est en réalité constante. La ligne est mal placée dans le programme.
Allineed
Messages postés
4
Date d'inscription
vendredi 18 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
18 janv. 2019 à 15:56
18 janv. 2019 à 15:56
phrase=input("Saisir un texte")
ch="abcdefghijklmnopqrstuvwxyz"
ch1=[i for i in ch]
ch2=list(ch1)
ch1.sort(reverse=True)
dico={i:j for i,j in zip(ch2,ch1)}
phrase=[dico[i] for i in phrase ]
phrase="".join(phrase)
print(phrase)
ch="abcdefghijklmnopqrstuvwxyz"
ch1=[i for i in ch]
ch2=list(ch1)
ch1.sort(reverse=True)
dico={i:j for i,j in zip(ch2,ch1)}
phrase=[dico[i] for i in phrase ]
phrase="".join(phrase)
print(phrase)
ElementW
Messages postés
4814
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 227
18 janv. 2019 à 22:36
18 janv. 2019 à 22:36
ch1=[i for i in ch]Juste
ch1=list(ch)suffit
ch1.sort(reverse=True)Pourquoi faire un tri quand on peut juste prendre la liste à l'envers
ch2=ch1[::-1]?
Pourquoi faire des listes pour construire
dicoquand on peut utiliser une
rangedans la compréhension
dico={ch[i]: ch[-1-i] for i in range(len(ch))}?
Pourquoi construire une liste intermédiaire quand
str.joinprend tout aussi bien un générateur:
"".join(dico[i] for i in phrase)?
On peut toujours faire plus simple en Python ;)
phrase=input("Saisir un texte") ch="abcdefghijklmnopqrstuvwxyz" dico={ch[i]: ch[-1-i] for i in range(len(ch))} print("".join(dico[i] if i in dico else i for i in phrase))
TheGameKiller
Messages postés
10
Date d'inscription
mercredi 19 décembre 2018
Statut
Membre
Dernière intervention
19 décembre 2020
19 janv. 2019 à 19:39
19 janv. 2019 à 19:39
Merci beaucoup, mais j'ai des restrictions à suivre. Je doit utiliser que les choses que j'ai vu en cours. En plus mon programme fonctionne mais je n'arrive pas à le faire tourner en boucle. Serte, je suis sur qui peut être perfectionner mais sa doit quand même ressembler à un programme du lycéen en 2nd