Discussions

projet final avec Pycharm (débugger et avec rafraichissement de la console)

Image

Voici mon programme final corrigé.

 

Il fonctionnait pas trop mal mais au second tour de boucle, j'avais une erreur de type :  TypeError.'str" object is not callable

Cette erreur venait d'une erreur de ma part d'avoir nommé mes variables du même nom que mes  fonctions donc Python ne savait pas trop quoi faire.

 

J'ai aussi essayé une petite astuce pour effacer la console dans Pycharm en créant une fonction : clear() si quelqu'un à une autre solution, je suis preneur car la mienne est assez "bizarre".

 

Voici mon code :

 

main.py :

from my_module import *
from time import sleep

alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

clear() # vider la console au départ du programme autrement le curseur est au milieu de l'écran

while True:
print(f"\033[34m{logo}\033[00m") # pour mettre la couleur en bleu et remettre la couleur blanche après

question = input(f"Voulez-vous\33[34m crypter\033[00m ou \033[34mdécrypter\033[00m un message ? ").lower()

while question != "crypter" and question != "décrypter":
print("ERREUR, veuillez répondre par (crypter ou décrypter) !")
question = input(f"Voulez-vous\33[34m crypter\033[00m ou \033[34mdécrypter\033[00m un message ? ").lower()

if question == "crypter":
cle_message = demander_cle_message(question) # la fonction retourne un tuple
msg_crypter = crypter(alphabet, cle_message[0], cle_message[1]) # appel de la fonction crypter
print(f"\t VOTRE MESSAGE {question.upper()} : {msg_crypter} ")
else:
cle_message = demander_cle_message(question) # la fonction retourne un tuple
msg_decrypter = decrypter(alphabet, cle_message[0], cle_message[1]) # appel de la fonction decrypter
print(f"\t VOTRE MESSAGE {question.upper()} : {msg_decrypter} ")

recommencer = input("Voulez-vous recommencer ? (o / n) : ").lower()
print()
if recommencer != "o":
clear() # on vide la console
print(f"\033[34m{logo}\033[00m")
print("AU REVOIR")
break
else:
sleep(0.5) # petite pose pour ne pas avoir un rafraichissement trop "brutal"
clear()

 

my_fonction.py : 

from os import system, name  # module pour la fonction clear()

def demander_cle_message(question: str) -> tuple:
cle = input(f"\t - Choississez une clé pour \33[34m{question}\033[00m (entre 1 et 26) : ")
try:
cle = int(cle)
if cle < 1 or cle > 26:
print("\t ERREUR, veuillez entrer un nombre entre 1 et 26 !\n")
return demander_cle_message(question) # fonction récursive
except:
print("\t ERREUR, veuillez entrer un nombre valide !\n")
return demander_cle_message(question) # fonction récursive
else:
message = input(f"\t - Entrez le \33[34mmessage\033[00m à {question} : ")
print("-" * 70)
return cle, message


def crypter(alphabet: list, cle: int, message: str) -> str:
msg = ""
for i in message:
if i in alphabet:
crypter = alphabet.index(i) + cle
message_crypter = alphabet[crypter]
msg += message_crypter
else:
msg += i
return msg


def decrypter(alphabet: list, cle: int, message: str) -> str:
msg = ""
for i in message:
if i in alphabet:
decrypter = alphabet.index(i) - cle
message_decrypter = alphabet[decrypter]
msg += message_decrypter
else:
msg += i
return msg


def clear():
"""
Fonction pour vider la console à chaque tour de boucle
"""
if name == "nt":
_ = system("cls")
else:
_ = system("clear")


logo = """
██████╗ █████╗ ███████╗███████╗ █████╗ ██████╗
██╔════╝██╔══██╗██╔════╝██╔════╝██╔══██╗██╔══██╗
██║ ███████║█████╗ ███████╗███████║██████╔╝
██║ ██╔══██║██╔══╝ ╚════██║██╔══██║██╔══██╗
╚██████╗██║ ██║███████╗███████║██║ ██║██║ ██║
╚═════╝╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝

██████╗██╗██████╗ ██╗ ██╗███████╗██████╗
██╔════╝██║██╔══██╗██║ ██║██╔════╝██╔══██╗
██║ ██║██████╔╝███████║█████╗ ██████╔╝
██║ ██║██╔═══╝ ██╔══██║██╔══╝ ██╔══██╗
╚██████╗██║██║ ██║ ██║███████╗██║ ██║
╚═════╝╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
"""

 

1 réponse
Image
Louis-Nicolas Leuillet
Le 22/10/2022 à 12:13

Merci Vincent ! Félicitations pour avoir su vous corriger :)

Image
Inscrivez-vous ou connectez-vous pour participer à la discussion.

Informations

Créée le 21 octobre 2022 15:48
Dernière activité le 21 octobre 2022 15:48