mirror of
https://github.com/arthur-pbty/nsi.git
synced 2026-06-03 15:07:31 +02:00
Update code comments and labels in exercise 3_6.py, add password generation functionality in exercise 4_4.py, and implement card drawing functionality in exercise 4_5.py
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
# En cryptographie, le code de César est une technique de chiffrement élémentaire qui consiste à décaler une lettre de 3 rangs vers la droite :
|
||||
# Ecrire le script de ce codage.
|
||||
|
||||
# Ces scripts prennent en charge les majuscules et les minuscules.
|
||||
# Ce script prend en charge les majuscules et les minuscules.
|
||||
|
||||
from tkinter import *
|
||||
|
||||
@@ -49,8 +49,12 @@ def decode(msg:str) -> str:
|
||||
return res
|
||||
|
||||
def update_labels(*args):
|
||||
code_label.config(text=f"Votre message coder : {code(msg.get())}")
|
||||
decode_label.config(text=f"Votre message decoder : {decode(msg.get())}")
|
||||
code_label.config(text=f"Votre message codé : {code(msg.get())}")
|
||||
decode_label.config(text=f"Votre message décodé : {decode(msg.get())}")
|
||||
|
||||
def copy_to_clipboard(text):
|
||||
fen.clipboard_clear()
|
||||
fen.clipboard_append(text)
|
||||
|
||||
fen = Tk()
|
||||
fen.title("Code de César")
|
||||
@@ -65,11 +69,11 @@ Entry(fen, textvariable=msg).pack()
|
||||
|
||||
code_label = Label(fen, text="")
|
||||
code_label.pack()
|
||||
btn = Button(fen, text="Copier le message coder", command=lambda:fen.clipboard_append(code(msg.get()))).pack()
|
||||
btn = Button(fen, text="Copier le message codé", command=lambda:copy_to_clipboard(code(msg.get()))).pack()
|
||||
|
||||
decode_label = Label(fen, text="")
|
||||
decode_label.pack()
|
||||
btn = Button(fen, text="Copier le message decoder", command=lambda:fen.clipboard_append(decode(msg.get()))).pack()
|
||||
btn = Button(fen, text="Copier le message decodé", command=lambda:copy_to_clipboard(decode(msg.get()))).pack()
|
||||
|
||||
|
||||
update_labels()
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
# A l'aide de la fonction randint() du module random, écrire une fonction qui retourne un mot de passe de longueur N (chiffres, lettres minuscules ou majuscules).
|
||||
# On donne :
|
||||
# chaine = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
|
||||
# >>> print(password(10))
|
||||
# mHVeC5rs8P
|
||||
# >>> print(password(6))
|
||||
# PYthoN
|
||||
|
||||
chaine = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
|
||||
|
||||
from random import randint, choice
|
||||
@@ -16,4 +24,35 @@ def password2(n:int) -> str:
|
||||
r += choice(chaine)
|
||||
return r
|
||||
|
||||
print(password2(10))
|
||||
print(password2(10))
|
||||
|
||||
# Avec une interface graphique :
|
||||
|
||||
from tkinter import *
|
||||
from random import randint, choice
|
||||
|
||||
def password(n:int) -> str:
|
||||
r = ''
|
||||
for i in range(n):
|
||||
r += choice(chaine)
|
||||
return r
|
||||
|
||||
def update_label(*args):
|
||||
label.config(text=f"Votre mot de passe : {password(n.get())}")
|
||||
|
||||
fen = Tk()
|
||||
fen.title("Mot de passe")
|
||||
fen.geometry("400x200")
|
||||
|
||||
n = IntVar()
|
||||
n.set(8)
|
||||
|
||||
Label(fen, text="Longueur du mot de passe :").pack()
|
||||
Entry(fen, textvariable=n).pack()
|
||||
|
||||
label = Label(fen, text=f"Votre mot de passe : {password(n.get())}")
|
||||
label.pack()
|
||||
|
||||
Button(fen, text="Générer", command=update_label).pack()
|
||||
|
||||
fen.mainloop()
|
||||
@@ -1,3 +1,8 @@
|
||||
# Ecrire une fonction qui retourne une carte (au hasard) d'un jeu de Poker à 52 cartes.
|
||||
# On utilisera la fonction choice() ou randint() du module random.
|
||||
# On donne :
|
||||
# ListeCarte = ['2s','2h','2d','2c','3s','3h','3d','3c','4s','4h','4d','4c','5s','5h','5d','5c', '6s','6h','6d','6c','7s','7h','7d','7c','8s','8h','8d','8c','9s','9h','9d','9c', 'Ts','Th','Td','Tc','Js','Jh','Jd','Jc','Qs','Qh','Qd','Qc','Ks','Kh','Kd','Kc','As','Ah','Ad','Ac']
|
||||
|
||||
from random import choice
|
||||
|
||||
ListeCarte = ['2s','2h','2d','2c','3s','3h','3d','3c','4s','4h','4d','4c','5s','5h','5d','5c', '6s','6h','6d','6c','7s','7h','7d','7c','8s','8h','8d','8c','9s','9h','9d','9c', 'Ts','Th','Td','Tc','Js','Jh','Jd','Jc','Qs','Qh','Qd','Qc','Ks','Kh','Kd','Kc','As','Ah','Ad','Ac']
|
||||
@@ -5,4 +10,36 @@ ListeCarte = ['2s','2h','2d','2c','3s','3h','3d','3c','4s','4h','4d','4c','5s','
|
||||
def tiragecarte():
|
||||
return choice(ListeCarte)
|
||||
|
||||
print(tiragecarte())
|
||||
print(tiragecarte())
|
||||
|
||||
# Avec une interface graphique (Tkinter et une API) :
|
||||
|
||||
import requests
|
||||
from tkinter import *
|
||||
from PIL import Image, ImageTk
|
||||
|
||||
def tiragecarte():
|
||||
response = requests.get("https://deckofcardsapi.com/api/deck/new/draw/?count=1")
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
return data['cards'][0]['image']
|
||||
return None
|
||||
|
||||
def affichecarte():
|
||||
image_url = tiragecarte()
|
||||
if image_url:
|
||||
print(image_url)
|
||||
img = Image.open(requests.get(image_url, stream=True).raw)
|
||||
img = img.resize((100, 150), Image.ANTIALIAS)
|
||||
photo = ImageTk.PhotoImage(img)
|
||||
canvas.image = photo
|
||||
canvas.create_image(50, 75, image=photo)
|
||||
else:
|
||||
print("Erreur lors du tirage de la carte")
|
||||
|
||||
fenetre = Tk()
|
||||
canvas = Canvas(fenetre, width=100, height=150, bg="ivory")
|
||||
canvas.pack()
|
||||
bouton = Button(fenetre, text="Tirer une carte", command=affichecarte)
|
||||
bouton.pack()
|
||||
fenetre.mainloop()
|
||||
|
||||
Reference in New Issue
Block a user