mirror of
https://github.com/arthur-pbty/nsi.git
synced 2026-06-03 23:36:19 +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 :
|
# 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.
|
# 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 *
|
from tkinter import *
|
||||||
|
|
||||||
@@ -49,8 +49,12 @@ def decode(msg:str) -> str:
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
def update_labels(*args):
|
def update_labels(*args):
|
||||||
code_label.config(text=f"Votre message coder : {code(msg.get())}")
|
code_label.config(text=f"Votre message codé : {code(msg.get())}")
|
||||||
decode_label.config(text=f"Votre message decoder : {decode(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 = Tk()
|
||||||
fen.title("Code de César")
|
fen.title("Code de César")
|
||||||
@@ -65,11 +69,11 @@ Entry(fen, textvariable=msg).pack()
|
|||||||
|
|
||||||
code_label = Label(fen, text="")
|
code_label = Label(fen, text="")
|
||||||
code_label.pack()
|
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 = Label(fen, text="")
|
||||||
decode_label.pack()
|
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()
|
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'
|
chaine = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
|
||||||
|
|
||||||
from random import randint, choice
|
from random import randint, choice
|
||||||
@@ -16,4 +24,35 @@ def password2(n:int) -> str:
|
|||||||
r += choice(chaine)
|
r += choice(chaine)
|
||||||
return r
|
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
|
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']
|
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():
|
def tiragecarte():
|
||||||
return choice(ListeCarte)
|
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