big update
This commit is contained in:
parent
ee880ee31b
commit
8d66eb7689
13
nsi_python/test/main.py
Normal file
13
nsi_python/test/main.py
Normal file
@ -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()
|
122
nsi_python/tp_noté_python/sujet.tex
Normal file
122
nsi_python/tp_noté_python/sujet.tex
Normal file
@ -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}
|
33
nsi_types_construits/exercice_python/frequences.py
Normal file
33
nsi_types_construits/exercice_python/frequences.py
Normal file
@ -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)
|
16
nsi_types_construits/exercice_python/notes.py
Normal file
16
nsi_types_construits/exercice_python/notes.py
Normal file
@ -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
|
Binary file not shown.
Before Width: | Height: | Size: 46 KiB |
@ -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)
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
@ -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}
|
|
Binary file not shown.
BIN
réseaux_sociaux/posters réseaux sociaux/Facebook/Le monde 23012 janvier 2019.pdf
Executable file
BIN
réseaux_sociaux/posters réseaux sociaux/Facebook/Le monde 23012 janvier 2019.pdf
Executable file
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 233 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2020.pdf
Normal file
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2020.pdf
Normal file
Binary file not shown.
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2021.pdf
Normal file
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/figaro2021.pdf
Normal file
Binary file not shown.
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/lacroix2020.pdf
Normal file
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/lacroix2020.pdf
Normal file
Binary file not shown.
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/pourleco2019.pdf
Normal file
BIN
réseaux_sociaux/posters réseaux sociaux/Tiktok/pourleco2019.pdf
Normal file
Binary file not shown.
BIN
réseaux_sociaux/posters réseaux sociaux/Whatsapp/whatsapp.pdf
Normal file
BIN
réseaux_sociaux/posters réseaux sociaux/Whatsapp/whatsapp.pdf
Normal file
Binary file not shown.
BIN
réseaux_sociaux/posters réseaux sociaux/You tube/figaro2021.pdf
Normal file
BIN
réseaux_sociaux/posters réseaux sociaux/You tube/figaro2021.pdf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user