diff --git a/nsi_python/test/main.py b/nsi_python/test/main.py new file mode 100644 index 0000000..5e05265 --- /dev/null +++ b/nsi_python/test/main.py @@ -0,0 +1,13 @@ +def pair(n): + if n % 2 == 0: + return True + else: + return False + +def tests(): + assert pair(0) == True + assert pair(-1) == False + assert pair(2) == True + print('Tous les tests ont été fait') + +tests() diff --git a/nsi_python/tp_noté_python/sujet.tex b/nsi_python/tp_noté_python/sujet.tex new file mode 100644 index 0000000..fdaa19f --- /dev/null +++ b/nsi_python/tp_noté_python/sujet.tex @@ -0,0 +1,122 @@ +\documentclass[11pt,a4paper]{../../template/template_cours} + +\usepackage{minted} + +\title{TP noté sur Python} +\author{Adrian Amaglio} +\def\thelevel{NSI} +\def\thesequence{Programmation} + +\begin{document} +Durée : 1h + +% --- +\section{Dessiner des pyramides} +L’objectif de cette partie est de concevoir un programme python capable d’afficher des pyramides de texte. Voici par exemple une pyramide d’étoiles de 4 étages : +\begin{verbatim} +* +* * +* * * +* * * * +\end{verbatim} +Nous allons pour cela créer une fonction affichant une ligne de longueur donnée et d’un symbole donné puis une fonction, utilisant la précédente, capable d’afficher une pyramide de hauteur donnée. +Cette partie sera à faire dans un fichier nommé \textit{pyramide.py}. + +\begin{exercice} + Créer une fonction appelée \textit{ligne}, prenant en paramètre un symbole (type texte ou \textit{str} en python) et une taille de ligne.\\ + Cette fonction affichera le symbole autant de fois que demandé dans le paramètre taille.\\ + \textit{Aide :} Pour afficher du texte sans retour à la ligne on ajoute un paramètre \textit{end} à print :\\ + \begin{minted}{python} +print('Bonsoir !', end='') + \end{minted} + Tester la fonction ligne avec plusieurs valeurs pour vérifier son bon fonctionnement. Voici des exemples de test : + \begin{minted}{python} +ligne('*', 10) +ligne('.', 1) +ligne('o', 5) + \end{minted} +\end{exercice} + +\begin{exercice} + Créer une fonction \textit{pyramide}, qui prend en paramètre une hauteur et un symbole et qui dessine la pyramide correspondante en utilisant la fonction \textit{ligne}. +\end{exercice} + +\begin{exercice} + Dessinez trois pyramides avec des symboles et des hauteurs différentes. +\end{exercice} + + +% --- +\section{Jeu de morpion} +L’objectif de cette partie est de concevoir un jeu de morpion (ou tic-tac-toe). +Cette partie sera à faire dans un fichier nommé \textit{morpion.py}.\\ +Le plateau de jeu sera représenté par une liste contenant trois liste (une pour chaque ligne du plateau). +Chaque ligne sera représentée par une liste de trois textes (str) qui peuvent avoir trois valeurs distinctes : +\begin{description} + \item[' '] Si la case est vide + \item['x'] Si la case contient une croix + \item['o'] Si la case contient un rond +\end{description} + + +\begin{exercice} + En haut de votre fichier \textit{morpion.py}, collez la ligne de python suivante : + \begin{minted}{python} +plateau = [ [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '] ] + \end{minted} + Vérifiez que votre fichier s’exécute bien et n’affiche rien. +\end{exercice} + +\begin{exercice} + Créer une fonction nommée \textit{afficher} qui affiche en texte le plateau de jeu. Elle prendra le plateau de jeu en paramètre.\\ +\end{exercice} + +\begin{exercice} + Créer une fonction nommée \textit{jouer} qui prend quatre paramètres : + \begin{itemize} + \item Le plateau de jeu + \item Le symbole à jouer (x ou o) + \item La ligne où on souhaite jouer + \item La colonne où on souhaite jouer + \end{itemize} + Cette fonction modifiera le plateau pour mettre le symbole à l’emplacement voulu. + Aucune vérification n’est faite à cette étape du programme, les coups de triche sont possibles. +\end{exercice} + +\begin{exercice} + Testez vos deux fonctions précédentes en les appelant avec des valeurs choisies. + Voici un exemple de test à modifier et enrichir : + \begin{minted}{python} +afficher(plateau) +jouer(plateau, 'x', 0, 0) +afficher(plateau) + \end{minted} +\end{exercice} + +\begin{exercice} + Modifier la fonction \textit{jouer} pour qu’elle vérifie de le coup demandé est valide. + La fonction doit maintenant retourner True si le coup a été joué et False si il est invalide.\\ + Tester à nouveau la fonction. +\end{exercice} + +\begin{exercice} + Créer une fonction \textit{partie} qui prend le plateau en paramètre et qui déroule une partie. Voici le principe de base. + \begin{itemize} + \item Demander au premier joueur où il souhaite jouer + \item Appeler la fonction jouer avec les paramètres correspondants + \item Demander au second joueur où il souhaite jouer + \item Appeler la fonction jouer avec les paramètres correspondants + \end{itemize} + Vérifiez que votre fonction : + \begin{itemize} + \item Gère correctement les cas où le coup est invalide + \item Utilise bien le symbole 'x' pour un joueur et 'o' pour l’autre + \end{itemize} + +\end{exercice} + +\begin{exercice} + Créer une fonction \textit{victoire} qui prend le plateau en paramètre et retourne le symbole 'x' si trois x sont alignés, 'o' si trois o sont alignés ou ' ' si aucun joueur n’a gagné. + Utilisez cette fonction dans votre fonction \textit{partie} + \end{exercice} +\end{document} diff --git a/nsi_types_construits/exercice_python/frequences.py b/nsi_types_construits/exercice_python/frequences.py new file mode 100644 index 0000000..c40854f --- /dev/null +++ b/nsi_types_construits/exercice_python/frequences.py @@ -0,0 +1,33 @@ +# Exercice 1 +# Modifiez la boucle présente à la fin du fichier pour qu’elle remplisse le dictionnaire frequences. +# Pour ce faire, il faut ajouter 1 à la valeur corresponant à une lettre dès qu’on la rencontre lors du parcours du texte +# Certaines valeurs vont poser problème à notre dictionnaire, tester bien que seules les lettres sont utilisées comme clé. + +# Exercice 2 +# Affichez les valeurs des lettres eiatsr divisées par le nombre total de lettres dans le texte. Vous obtenez un ratio qui sera grand pour les lettres très utilisées. +# Comparez ce ratio avec celui que l’on attribue souvent au français (recherez le sur internet). + + + +# Texte issu de wikipédia +# https://fr.wikipedia.org/wiki/Journée_du_souvenir_trans +texte = """ +la journée du souvenir trans, déclinaison française du transgender day of remembrance (tdor), a lieu le 20 novembre dans le monde entier, pour commémorer les personnes trans assassinées pour motif transphobe, c’est-à-dire la haine des personnes trans, et pour attirer l'attention sur les violences subies par les communautés trans4. +la journée du souvenir trans a plusieurs objectifs : + commémorer toutes les personnes ayant été victimes de crimes haineux et de préjugés, + sensibiliser sur les crimes haineux envers la communauté trans, + rendre hommage aux personnes décédées et à leurs proches. +si cette journée marque la solidarité de la communauté lgbt à l’égard des victimes et témoigne de son indignation, elle veut aussi rappeler que la transphobie n’est pas reconnue comme discrimination ou circonstance aggravante pour les crimes par l’état. +il en résulte qu’aucune statistique officielle n’est disponible. en 2011, 221 cas de personnes trans assassinées furent comptabilisés par les associations trans. +ce nombre ne représente pas la réalité puisque le comptage est effectué localement par un nombre réduit d’organisations et dans peu de pays. de plus, la plupart des crimes restent ignorés puisque le caractère transphobe n’est pas retenu par les autorités. +""" + +# Ce dictionnaire contiendra en clé les lettres de l’alphabet, en valeur le nombre de fois qu’elles sont apparues dans le texte. +frequences = {'a':0, 'b':0, 'c':0, 'd':0, 'e':0, 'f':0, 'g':0, 'h':0, 'i':0, 'j':0, 'k':0, 'l':0, 'm':0, 'n':0, 'o':0, 'p':0, 'q':0, 'r':0, 's':0, 't':0, 'u':0, 'v':0, 'w':0, 'x':0, 'y':0, 'z':0} + +# Cette boucle permet de parcourir le texte, lettre par lettre. À chaque tour de boucle la variable lettre contiendra toutes les lettres du texte, une à une, dans l’ordre. +for lettre in texte: + # On affiche le texte lettre par lettre. + print(lettre, end='') + +print(frequences) diff --git a/nsi_types_construits/exercice_python/notes.py b/nsi_types_construits/exercice_python/notes.py new file mode 100644 index 0000000..38bd1d2 --- /dev/null +++ b/nsi_types_construits/exercice_python/notes.py @@ -0,0 +1,16 @@ +# Voici un dictionnaire dont la clé est un nom, la valeur une liste de notes +notes = {'John' : [10, 8, 14], 'Amaglio': [2, 8, 0.5], 'Aya': [18, 20, 25]} + +# Exercice 1 +# Affichez le nom et les notes de chaque personne répertoriée dans le dictionnaire notes. + +# Exercice 2 +# Pour chaque personne, calculez sa moyenne. Vous la stockerez dans un nouveau dictionnaire que vous appellerez moyenne. +# Affichez ensuite les noms et moyennes de chaque personne. + +# Exercice 3 +# Créez un dictionnaire nommé classes dans lequel les clés seront des noms de classe (par exemple seconde18) et les valeurs seront les noms des personnes de cette classe. +# Vous pourrez attribuer les personnes du dictionnaire à des classes, il faut au moins une classe qui ait plusieurs personnes. + +# Exercice 4 +# Créez un dictionnaire nommé moyennes dans lequel les clés seront les noms de classe et les valeurs seront les moyennes de cette classe diff --git a/projets/projet_biere/circuit.png b/projets/projet_biere/circuit.png deleted file mode 100644 index 3d255bb..0000000 Binary files a/projets/projet_biere/circuit.png and /dev/null differ diff --git a/projets/projet_biere/main.py b/projets/projet_biere/main.py deleted file mode 100644 index 69fded2..0000000 --- a/projets/projet_biere/main.py +++ /dev/null @@ -1,92 +0,0 @@ -import time - -# -------------------------------------------------------------------------------- -# Gestion des pages web -# -------------------------------------------------------------------------------- - -import bottle, threading - -def nouvelle_temp_cible (temperature): - """ Cette fonction sauvegarde la température cible """ - with open('cible.txt', 'w', coding="utf8") as f: - f.write(température) - -def temp_format_html (): - """ Cette fonction retourne un texte HTML contenant les mesures de températures""" - return 'Non implémenté' - - -@bottle.get('/') -def get_temp(): - return temp_format_html() - -threading.Thread(target=bottle.run, kwargs=dict(host='', port=8080)).start() - -# -------------------------------------------------------------------------------- -# Gestion du capteur de température -# -------------------------------------------------------------------------------- - -import os -import glob - -# On trouve où sont les valeurs du capteurs -dossier_base = '/sys/bus/w1/devices/' -dossier_capteur = glob.glob(dossier_base + '28*')[0] -fichier_capteur = dossier_capteur + '/w1_slave' -fichier_actionneur = 'TODO' - -def lecture_temp_brute(): - """ Cette fonction retourne la valeur du capteur sans traitement """ - with open(fichier_capteur, 'r') as f: - lines = f.readlines() - return lines - -def lecture_temp(): - """ Cette fonction calcule la température à partir des mesures brutes """ - lines = lecture_temp_brute() - while lines[0].strip()[-3:] != 'YES': - time.sleep(0.2) - lines = lecture_temp_brute() - equals_pos = lines[1].find('t=') - if equals_pos != -1: - temp_string = lines[1][equals_pos+2:] - temp_c = float(temp_string) / 1000.0 - return temp_c - -# -------------------------------------------------------------------------------- -# Gestion du capteur de température -# -------------------------------------------------------------------------------- - -def chauffage_on (): - """ Cette fonction allume le chauffage de la cuve """ - with open(fichier_actionneur, 'w') as f: - f.write('1') - -def chauffage_off (): - """ Cette fonction éteint le chauffage de la cuve """ - with open(fichier_actionneur, 'w') as f: - f.write('0') - -# -------------------------------------------------------------------------------- -# Fonctions d’aide -# -------------------------------------------------------------------------------- - -def ajout_ligne_fichier(nom_fichier, ligne): - """ Cette fonction ajoute le texte dans la variable ligne à la fin du fichier « nom_fichier » """ - with open(nom_fichier, 'a', encoding="utf8") as f: - f.write(ligne) - -def temp_cible(): - """ Cette fonction retourne la température cible qui doit être maintenue pendant la fermentation """ - with open("cible.txt", 'r', coding="utf8") as f: - return f.read().strip() - -# -------------------------------------------------------------------------------- -# Programme principal -# -------------------------------------------------------------------------------- - -while True: - print(lecture_temp()) - time.sleep(1) - - diff --git a/projets/projet_biere/sujet.pdf b/projets/projet_biere/sujet.pdf deleted file mode 100644 index 197dc1c..0000000 Binary files a/projets/projet_biere/sujet.pdf and /dev/null differ diff --git a/projets/projet_biere/sujet.tex b/projets/projet_biere/sujet.tex deleted file mode 100644 index 789c149..0000000 --- a/projets/projet_biere/sujet.tex +++ /dev/null @@ -1,77 +0,0 @@ -\documentclass[11pt,a4paper]{../../template/template_cours} -\usepackage{listings} - -\usepackage{minted} - -\title{Projet pluridisciplinaire — Le brassage de la bière} -\author{Adrian Amaglio} -\def\thesequence{Données structurées, web} - -\begin{document} -Ceci est une trame à suivre, les détails techniques ne sont pas réglés. -Durée : 3h - -% -% https://pimylifeup.com/raspberry-pi-temperature-sensor/ -\section{Microcontrolleur programmable} -Nous travaillerons sur un raspberry pi pour récupérer les valeurs des capteurs. - -\subsection{Mesure de la température} -% En vrai on peut aussi mesurer la pression et le pH -Durée : 1h -\begin{exercice} - Connectez le capteur de température et la résistance au raspberry pi comme sur le shéma suivant : - \includegraphics[width=\textwidth]{circuit.png} -\end{exercice} - -\begin{exercice} - Récupérez le fichier python à cette adresse : \url{https://git.jean-cloud.net/adrian/cours-snt/raw/branch/master/projets/projet_biere/main.py} - \\ - et exécutez-le sur votre raspberry pi. - Vérifiez qu’il affiche bien la valeur de la température chaque seconde -\end{exercice} - -\begin{exercice} - Modifiez le programme principal pour qu’il écrive dans un fichier CSV, la date, l’heure actuelle et la température mesurée. - Votre fichier CSV devra ressembler à cela : - \begin{verbatim} - date;heure;temperature - 11/02/2021;15:14:10;22 - 11/02/2021;15:15:10;21 - 11/02/2021;15:16:10;21 - 11/02/2021;15:17:10;20 - 11/02/2021;15:18:10;20 - \end{verbatim} - - Vous pourrez vous aider de la fonction « ajout\_ligne\_fichier » disponible dans le fichier python que vous avez téléchargé. -\end{exercice} - - -\subsection{Régulation du chauffage} -Durée 1h - -\begin{exercice} - Le chauffage de la cuve de fermentation n’est pas réglable, le chauffage est donc mis à fond pour faire monter la température, puis eteint lorqu’elle est acceptable. - \\ - La fonction « temp\_cible » retourne la valeur de la température idéale pour la fermentation. - \\ - Dans votre programme principal, activez le chauffage si nécessaire (en fonction de la température relevée) pour que la température soit optimale dans la cuve. - \\ - Vous vous aidere des fonctions « chauffage\_on » et « chauffage\_off » fournies. -\end{exercice} - -\subsection{Affichage des mesures sur une page web} -Durée 1h -\begin{exercice} - Exécutez votre programme python puis rendez-vous à l’adresse \url{http://localhost:8080}. Vous devriez voir le message « Non implémenté ». - \\ - Pour que cette page web affiche la liste des températures mesurées, modifiez la fonction « temp\_format\_html » pour qu’elle génère un code HTML qui met en forme les mesures dans un tableau. -\end{exercice} - -\begin{exercice} - Bonus : Ajoutez une page « /reglage » qui affiche un formulaire pour que l’utilisateur puisse renseigner une température à maintenir. - \\ - Faites en sorte que lorsque l’utilisateur valide le formulaire, la valeur qu’il a entré soit passée à la fonction « nouvelle\_temp\_cible ». -\end{exercice} - -\end{document} diff --git a/réseaux_sociaux/posters réseaux sociaux/Facebook/Le Monde 22722 31 janvier 2018_Facebook.pdf b/réseaux_sociaux/posters réseaux sociaux/Facebook/Le Monde 22722 31 janvier 2018_Facebook.pdf new file mode 100755 index 0000000..cd1b158 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Facebook/Le Monde 22722 31 janvier 2018_Facebook.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Facebook/Le monde 23012 janvier 2019.pdf b/réseaux_sociaux/posters réseaux sociaux/Facebook/Le monde 23012 janvier 2019.pdf new file mode 100755 index 0000000..314788d Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Facebook/Le monde 23012 janvier 2019.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Facebook/courrier internationnal n°1408 26 octobre 2016.PNG b/réseaux_sociaux/posters réseaux sociaux/Facebook/courrier internationnal n°1408 26 octobre 2016.PNG new file mode 100755 index 0000000..93b9064 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Facebook/courrier internationnal n°1408 26 octobre 2016.PNG differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Instagram/Pour leco n°9 mai 2019 p35_instagram.pdf b/réseaux_sociaux/posters réseaux sociaux/Instagram/Pour leco n°9 mai 2019 p35_instagram.pdf new file mode 100755 index 0000000..2b9010c Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Instagram/Pour leco n°9 mai 2019 p35_instagram.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Instagram/scienceetviejunior2020.pdf b/réseaux_sociaux/posters réseaux sociaux/Instagram/scienceetviejunior2020.pdf new file mode 100644 index 0000000..a39abfc Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Instagram/scienceetviejunior2020.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Snapchat/liberation2020.pdf b/réseaux_sociaux/posters réseaux sociaux/Snapchat/liberation2020.pdf new file mode 100644 index 0000000..19df71d Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Snapchat/liberation2020.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Snapchat/scienceetviejunior2020.pdf b/réseaux_sociaux/posters réseaux sociaux/Snapchat/scienceetviejunior2020.pdf new file mode 100644 index 0000000..8d23138 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Snapchat/scienceetviejunior2020.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Tiktok/Extraits de la politique de confidentialité de TikTok.docx b/réseaux_sociaux/posters réseaux sociaux/Tiktok/Extraits de la politique de confidentialité de TikTok.docx new file mode 100755 index 0000000..2df2c86 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Tiktok/Extraits de la politique de confidentialité de TikTok.docx differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2020.pdf b/réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2020.pdf new file mode 100644 index 0000000..b3d80ab Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2020.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2021.pdf b/réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2021.pdf new file mode 100644 index 0000000..e78006c Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2021.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Tiktok/lacroix2020.pdf b/réseaux_sociaux/posters réseaux sociaux/Tiktok/lacroix2020.pdf new file mode 100644 index 0000000..96daece Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Tiktok/lacroix2020.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Tiktok/pourleco2019.pdf b/réseaux_sociaux/posters réseaux sociaux/Tiktok/pourleco2019.pdf new file mode 100644 index 0000000..eb7f8ec Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Tiktok/pourleco2019.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/Whatsapp/whatsapp.pdf b/réseaux_sociaux/posters réseaux sociaux/Whatsapp/whatsapp.pdf new file mode 100644 index 0000000..1ed25f3 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/Whatsapp/whatsapp.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/You tube/figaro2021.pdf b/réseaux_sociaux/posters réseaux sociaux/You tube/figaro2021.pdf new file mode 100644 index 0000000..765ba00 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/You tube/figaro2021.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/You tube/scienceetviejunior2020.pdf b/réseaux_sociaux/posters réseaux sociaux/You tube/scienceetviejunior2020.pdf new file mode 100644 index 0000000..8d23138 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/You tube/scienceetviejunior2020.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/You tube/topo 28 p38 avril 2021_youtube.pdf b/réseaux_sociaux/posters réseaux sociaux/You tube/topo 28 p38 avril 2021_youtube.pdf new file mode 100755 index 0000000..2376c56 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/You tube/topo 28 p38 avril 2021_youtube.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/politique confidentialite chaque reseau.pdf b/réseaux_sociaux/posters réseaux sociaux/politique confidentialite chaque reseau.pdf new file mode 100755 index 0000000..b209a95 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/politique confidentialite chaque reseau.pdf differ diff --git a/réseaux_sociaux/posters réseaux sociaux/seance_reseaux_sociaux fiche élève.odt b/réseaux_sociaux/posters réseaux sociaux/seance_reseaux_sociaux fiche élève.odt new file mode 100644 index 0000000..b6755c5 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/seance_reseaux_sociaux fiche élève.odt differ diff --git a/réseaux_sociaux/posters réseaux sociaux/seance_reseaux_sociaux fiche élève.pdf b/réseaux_sociaux/posters réseaux sociaux/seance_reseaux_sociaux fiche élève.pdf new file mode 100644 index 0000000..86983c8 Binary files /dev/null and b/réseaux_sociaux/posters réseaux sociaux/seance_reseaux_sociaux fiche élève.pdf differ