Programmation

Langage Python et PHP, cours de Julie Chaumard

Ressources

Futureengineer.fr

Apprendre Python en ligne : Futurecoder.io/

Exercice Python

Le quizz

Légalité
Quand une entreprise écrit du code informatique puis vend l'application à un client, qui est propriétaire do code ?

La propriété du code informatique dépend du contrat entre l’entreprise qui développe le logiciel et le client qui l’achète. Voici les principaux scénarios possibles :

1. L’entreprise conserve la propriété du code

• Si aucune clause spécifique n’est prévue dans le contrat, le droit d’auteur reste en principe entre les mains de l’entreprise qui a développé le code.

• Le client obtient seulement une licence d’utilisation, qui peut être exclusive ou non, avec des conditions définies (durée, nombre d’utilisateurs, modifications autorisées, etc.).

2. Le client devient propriétaire du code

• Si le contrat prévoit une cession de droits, l’entreprise transfère la propriété du code au client. Cette cession doit être écrite et préciser l’étendue des droits cédés.

• Généralement, cela implique un coût plus élevé pour le client, car l’entreprise renonce à exploiter le code pour d’autres clients.

3. Cas particuliers

Développement sur mesure : si l’entreprise crée un logiciel spécialement pour un client, le contrat peut prévoir que le client devient propriétaire du code source.

Logiciels open source : si l’entreprise utilise des composants open source, le client doit respecter les licences associées (par exemple, GPL, MIT, Apache).

SaaS (Software as a Service) : souvent, le client ne possède pas le code mais accède simplement à l’application en ligne.

Conclusion

En l’absence de clause spécifique dans le contrat, c’est généralement l’entreprise qui conserve la propriété du code. Pour éviter toute ambiguïté, il est crucial de bien définir la propriété intellectuelle dans le contrat entre les parties.

Un salarié qui écrit du code : est-ce le salarié qui est propriétaire ou l'entreprise pour laquelle il travaille ?

Dans le cas d’un salarié qui écrit du code pour son entreprise, la propriété du code appartient généralement à l’entreprise, sous certaines conditions définies par le droit du travail et le droit d’auteur.

1. Principe général du droit d’auteur

En France (et dans de nombreux pays), le créateur d’une œuvre est par défaut son auteur et donc son propriétaire. Cela inclut le code informatique, qui est protégé par le droit d’auteur en tant qu’“œuvre de l’esprit” (article L111-1 du Code de la propriété intellectuelle).

2. Exception pour les salariés (article L113-9 du Code de la propriété intellectuelle)

Lorsqu’un salarié écrit du code dans le cadre de son contrat de travail et d’une mission qui prévoit le développement de logiciels, alors les droits patrimoniaux sur ce code sont automatiquement transférés à l’employeur.

Cela signifie que l’entreprise devient propriétaire du code sans avoir besoin de signer un contrat spécifique de cession de droits.

3. Cas particuliers

Le salarié écrit du code en dehors de son contrat de travail : Si le développement ne fait pas partie des missions prévues dans le contrat de travail, alors le salarié reste propriétaire du code, même s’il utilise des outils de l’entreprise.

Un freelance ou prestataire externe : Contrairement aux salariés, un freelance ou un prestataire externe reste propriétaire du code qu’il développe, sauf si un contrat de cession de droits est signé.

Brevets et inventions logicielles : Si le code conduit à une invention brevetable, des règles spécifiques s’appliquent, notamment pour la rémunération du salarié.

4. Et si l’entreprise veut sécuriser la propriété du code ?

Pour éviter toute ambiguïté, de nombreuses entreprises ajoutent dans les contrats de travail des clauses précisant que tout code développé par le salarié dans le cadre de son travail appartient à l’entreprise.

Conclusion

Par défaut, l’entreprise est propriétaire du code écrit par un salarié si cela relève de ses missions. Dans les autres cas, le salarié conserve ses droits, sauf clause spécifique dans son contrat.

#0 - L’environnement
Quel environnement ?
  • Local vs server
    • en local sur votre ordinateur pour le dev
  • Operating System
    • Windows
    • Linux
  • Environnement spécifique au language
    • outils / logiciels qui permettent la compilation du code
  • IDE
    • un logicil où on écrit les lignes de code
      • un IDE universel
        • VSCODE
Front-end vs Back-end
Les languages
  • Langage de programmation orienté objet 
    • On manipule des objets qui mis ensemble font tout ce que l’application doit faire. Ces objets, mis ensemble, permettent à l’application de fonctionner, car chacun remplit un rôle précis avec ses propres données et actions.
      • classe : un plan ou un modèle pour créer un objet
      • objet : c’est un exemplaire de l’objet particulier créé grâce que plan de la classe
      • attributs : les particularités ou les caractéristiques propre à chaque l’objet (ce qui les différencie les uns des autres)
      • méthode : les actions que l’objet peut réaliser, définies dans le plan de la classe.
    • « Les objets sont comme des petites unités intelligentes qui savent quoi faire et comment réagir. »
    •	Java
    •	Python
    •	C++
    •	C#
    •	Ruby
    
  • qu’est-ce qui distingue les langages orientés objet des autres types de langages ?
    • Un langage non orienté objet (ou impératif, procédural, fonctionnel, etc.) ne repose pas sur la notion d’objets pour organiser le code.
    • les instructions sont plutôt les unes à la suite des autres
    C, Pascal, basic, Cobol
  • Certains langages comme Python, JavaScript ou PHP peuvent faire à la fois de l’objet ET du procédural, selon la façon dont on les utilise.
  • Langages procéduraux : les pionniers
    • 1950-1970 : l’époque des langages procéduraux classiques :
    • Fortran (1957)
    • ALGOL (1958)
    • COBOL (1959)
    • C (1972)
    • Pascal (1970)

    À cette époque, on pensait la programmation comme une suite d’instructions exécutées pas à pas, avec des fonctions ou des procédures.

  • Les objets sont arrivés après
    • C++ (1983) : extension orientée objet du langage C
    • Années 90-2000 | Explosion des langages orientés objet
    • Python (1991), Java (1995), Ruby (1995), C# (2000)

#1 - Règles de gestion et algorithme

Toute programmation doit commencer par les règles de gestion (on peut faire un schéma) et un algorithme.

#3 - Python
Faire du Python sur internet :

Google Colab très bien

Installer Python en local
  • Windows
    • python.org, vérifier la compatibilité avec votre OS ;)
Écrire et exécuter un programme
Avec IDLE
  • Chercher l’application IDLE dans le champ de recherche
  • >>> est l’invite de commande
  • Ecrire le programme et le sauvegarder
    • File / New File
      • Ecrire print("hello")
    • File / save
  • Exécuter le programme
    • Run / Run module
  • Pour ouvrir le Shell
    • Run / Python shell
  • un icone sur le bureau avec ton programme est créé

Exercices
Attaque de Ninja

Vous allez subir une attaque de Ninjas. En fonction du nombre de Ninjas que vous allez devoir affronter vous allez adopter une stratégie.

Vous demandez d’abord le nombre de Ninjas à affronter.

Selon le nombre voici les stratégies :

  • Un nombre inférieur à 50 = «Il y en a trop»
  • Un nombre inférieur à 30 = «Je vais devoir me battre mais je peux les avoir»
  • Un nombre inférieur à 10 = «Je peux affronter ces Ninja !»

Vous affichez votre stratégie.

  • Cet exercice contient un piège ! Es-tu tombé dedans ? Si tu relis l’énoncé de l’exercice et écris l’instruction if dans l’ordre indiqué, tu risques de ne pas obtenir les résultats auxquels tu t’attends. Voyons cela :
# variable "espace" pour aérer le rendu
espaces = ' ' * 5

# On demande le nombre de Ninja trouvées au départ
ninjas = int(input("Veuillez entrer le nombre de Ninja : "))
print("\nLa variable \"ninjas\" est égale à = ", ninjas,"\n")

if ninjas < 50:
	print(f"{espaces}Il y en a trop")
elif ninjas < 30:
	print("Je vais devoir me battre mais je peux les avoir ")
elif ninjas < 10:
	print("Je peux affronter ces ninjas !")

print("\n-------------------")
print("PROGRAMME NINJA QUI CONTIENT UNE ERREUR")
print("-------------------\n")
  • Même si le nombre de Ninja est plus petit que 10, tu reçois toujours le message « Il y en a trop ». Ceci est dû au fait que la première condition, < 50, est évaluée en premier lieu. Autrement dit, Python la vérifie d’abord, avant les autres. Or, comme la valeur de la variable est bel et bien plus petite que 50, le programme affiche le message auquel tu ne t’attendais pas.
    Pour que les vérifications se fassent dans le bon ordre, il faut inverser l’ordre du code précédent, pour vérifier d’abord que la variable est plus petite que 10, puis que 30, puis que 50 :
print("\n-------------------")
print("PROGRAMME NINJA")
print("-------------------\n")

# variable "espace" pour aérer le rendu
espaces = ' ' * 5

# On demande le nombre de Ninja trouvées au départ
ninjas = int(input("Veuillez entrer le nombre de Ninja : "))
print("\nLa variable \"ninjas\" est égale à = ", ninjas,"\n")

if ninjas < 10:
	print(f"{espaces}=> Je peux affronter ces ninjas !")
elif ninjas < 30:
	print(f"{espaces}=> Je vais devoir me battre mais je peux les avoir :)")
elif ninjas < 50:
	print(f"{espaces}=> Il y en a trop :(")

print("\n-------------------")
print("FIN DU PROGRAMME NINJA")
print("-------------------\n")
  • Écrire le programme en ajoutant ce qu’il se passe quand il y a plus de 50 Ninja.
print("\n-------------------")
print("PROGRAMME NINJA")
print("-------------------\n")

# variable "espace" pour aérer le rendu
espaces = ' ' * 5

# On demande le nombre de Ninja trouvées au départ
ninjas = int(input("Veuillez entrer le nombre de Ninja : "))
print("\nLa variable \"ninjas\" est égale à = ", ninjas,"\n")

if ninjas < 10:
	print(f"{espaces}=> Je peux affronter ces ninjas !")
elif ninjas < 30:
	print(f"{espaces}=> Je vais devoir me battre mais je peux les avoir :)")
elif ninjas < 50:
	print(f"{espaces}=> Il y en a trop :(")
else:  # Cas où le nombre de ninjas est supérieur ou égal à 50
    print(f"{espaces}=> Mission impossible, je dois fuir !")

print("\n-------------------")
print("FIN DU PROGRAMME NINJA")
print("-------------------\n")
Ton âge

Vous avez besoin de connaître l’âge de la personne.

Afficher tous les nombres pairs (si l’âge est pair) ou impairs (si l’âge est impairs) de 0 jusqu’à l’âge de la personne.

Exemple :

  • âge 21 ans : 1 3 5 7 9 11 13 15 17 19 21
  • âge 18 ans : 2 4 6 8 10 12 14 16 18

Bonus : s’amuser avec la fonction len()

Résultat

for

# C'est une boucle qui va se répéter un nombre de fois

range (valeur de départ, valeur de fin exclusive, la pas)
range (2, 16, 2)
range (cela commence à 2, La séquence s'arrête avant d'atteindre 16, À chaque itération, la valeur de x sera augmentée de 2)

# Pour une nombre pair
for x in range(2, 16, 2):
	print(x)

# Pour un nombre impair
for x in range(1, 17, 2):
  print(x)

Écris le programme qui demande l’âge et en fonction si c’est un âge pair ou impair, avance en pair ou impair :

  • comment fait-on pour savoir si un nombre est pair ?
print("\n-------------------")
print("PROGRAMME QUI DONNE DES NOMBRES PAIRS OU IMPAIRS")
print("-------------------\n")

# Demande de l'âge à l'utilisateur
age = int(input("Veuillez entrer votre âge : "))
# Vérifie si l'âge est pair ou impair
if age % 2 == 0:
    print(f"\nVotre âge ({age}) est pair. Nous allons avancer par des nombres pairs.\n")
    # Génère une séquence de nombres pairs à partir de l'âge
    for x in range(2, age + 2, 2):
        print(x)
else:
    print(f"\nVotre âge ({age}) est impair. Nous allons avancer par des nombres impairs.\n")
    # Génère une séquence de nombres impairs à partir de l'âge
    for x in range(1, age + 2, 2):
        print(x)

print("\n-------------------")
print("FIN DU PROGRAMME QUI DONNE DES NOMBRES PAIRS OU IMPAIRS")
print("-------------------\n")

Ton poids sur la lune

Si tu étais en ce moment sur la Lune, ton poids ne représenterait que 16,5% de celui que tu as sur Terre. Pour le calculer, multiplie ton poids sur Terre par 0,165 (attention au point décimal : 0.165 !).
Supposons que tu prennes un kilo de plus tous les ans pendant les 15 années à venir. Quel serait ton poids sur la Lune lors de tes visites annuelles et au bout des 15 ans? Utilise une boucle for pour afficher ton poids sur la Lune pour chaque année.

Résultat

  • Pour calculer ton poids en kilogrammes sur la lune sur 15 ans, crée d’abord une variable “poids” pour mémoriser ton poids de départ.
  • Pour chaque année, tu peux calculer ton nouveau poids en ajoutant un kilo, puis multiplier le tout par 16,5 % (0.165), pour connaître le poids équivalent sur la lune

  • .2f : pour insérer une valeur de type virgule flottante (float)avec 2 chiffres après la virgule.
    print("\n-------------------")
    print("PROGRAMME DE TON POIDS SUR LA LUNE")
    print("-------------------\n")
    
    # Demande le poids à l'utilisateur
    poids = int(input("Veuillez entrer votre poids : "))
    print("\n")
    for annee in range(1, 16):
        poids_sur_lune = poids * 0.165
        print(f"Année {annee} = {poids_sur_lune:.2f}")
        poids = poids + 1
    
    print("\n-------------------")
    print("FIN DU PROGRAMME DE TON POIDS SUR LA LUNE")
    print("-------------------\n")
Conversion binaire

Écrire le programme qui convertit un nombre en binaire et inversement.

print("\n-------------------")
print("PROGRAMME DE CONVERSION BINAIRE")
print("-------------------\n")

def convertir_en_binaire(nombre):
    
    return bin(nombre)[2:]  # [2:] pour enlever le préfixe '0b'

def convertir_en_decimal(binaire):
    
    return int(binaire, 2)

# Menu pour l'utilisateur
print("Programme de conversion :\n")
print("1. Convertir un entier en binaire")
print("2. Convertir un nombre binaire en entier\n")

choix = input("Entrez votre choix (1 ou 2) : ")

if choix == "1":
    # Conversion d'un entier en binaire
    nombre = int(input("\nEntrez un nombre entier : "))
    binaire = convertir_en_binaire(nombre)
    print(f"\nLe nombre {nombre} en binaire est : {binaire}")
elif choix == "2":
    # Conversion d'un binaire en entier
    binaire = input("\nEntrez un nombre binaire (ex : 1101) : ")
    try:
        entier = convertir_en_decimal(binaire)
        print(f"\nLe nombre binaire {binaire} en entier est : {entier}")
    except ValueError:
        print("\nEntrée invalide. Assurez-vous d'entrer un nombre binaire valide.")
else:
    print("\nChoix invalide. Veuillez relancer le programme.")

print("\n-------------------")
print("FIN DU PROGRAMME DE CONVERSION BINAIRE")
print("-------------------\n")
EXERCICE DES PIÈCES D’OR

Énoncé

  • Imaginons que tu creuses dans le fond du jardin et que tu y trouves un sac contenant 20 pièces d'or.
  • Le lendemain, tu te faufiles à la cave pour les placer dans la machine à dupliquer à vapeur de ton génial inventeur de grand-père (par chance, les 20 pièces y rentrent parfaitement). Tu entends un sifflement et quelques bruits bizarres et quelques heures plus tard, en sortent 10 nouvelles pièces étincelantes. Le nombre de pièces magiques est égal aux nombre de pièces trouvés divisés par 2 (seulement la partie entière de la division).
  • Combien de pièces aurais-tu dans ton coffre à trésor si tu faisais cela chaque jour pendant un an ?
    • Sur le papier, les formules pour le calculer ressembleraient à ceci :
      10 × 365 = 3 650 fabriquées sur une année
      20 + 3 650 = 3 670 pièces
  • Et maintenant, que se passe-t-il si un corbeau découvre ton trésor et entre chaque semaine dans ta chambre pour voler 3 pièces?
  • Au bout d'une année de ce jeu-là, combien te resterait-il de pièces ?
    • Sur le papier, les formules pour le calculer ressembleraient à ceci :
      3 x 52 = 156 pièces volées sur une année
      3670 - 156 = 3514 pièces restantes
  • Maintenant imaginons qu’au bout de 6 mois tu places un épouvantail devant ta fenêtre. Le corbeau a plus de difficulté pour voler tes pièces. Il ne peut en voler que 2 part semaine.
  • Combien de pièce te resterait-il si une moitié de l’année tu n’as pas d’épouvantail et l’autre moitié de l’année, tu as un épouvantail
    • Sur le papier, les formules pour le calculer ressembleraient à ceci :
      3 x 26 = 78 pièces volées pour les 6 mois sans épouvantail
      2 x 26 = 52 pièces volées pour les 6 mois avec épouvantail
      3670 - 78 - 52 = 3540 pièces restantes
  • Écris l’algorithme qui consiste à calculer le nombre de pièce restante
    • d’abord afficher le nombre de pièce restante au bout d’un an (365 jours)
    • ensuite pour chaque semaine de l’année, sous la forme
      • “Semaine numéro 1 = 97 pièces restantes / 80 pièces fabriquées / 3 pièces volées”
    • !! attention 52 semaines à 7 jours donne 364 et non 365
  • Ensuite écris le programme en Python à partir de l’algorithme

Résultat

PROGRAMME fabriquer_pieces
VAR 
	pieces_trouvees : ENTIER
	pieces_magiques : ENTIER
	pieces_volees : ENTIER
	nombre_de_pieces : ENTIER
	semaine : ENTIER 
DEBUT
	ECRIRE ("Veuillez entrer le nombre de pièces trouvées : ")
	pieces_trouvees <- LIRE()
	ECRIRE ("Veuillez entrer le nombre de pièces fabriquées par jours avec la machine de grand-père : ")
	pieces_magiques <- LIRE()
	ECRIRE ("Veuillez entrer le nombre de pièces volées chaque semaine sans épouvantail : ")
	pieces_volees <- LIRE()
	
	nombre_de_pieces = (pieces_trouvees) + (pieces_magiques * 365) - (pieces_volees * 26) - ((pieces_volees - 1) * 26)
	ECRIRE ("Le nombre de pièces restante à la fin de l'année = ", nombre_de_pieces)
	
	nombre_de_pieces = pieces_trouvees
	
	POUR i ALLANT de 1 à 52 AU PAS DE 1 
   FAIRE 
      
      SI semaine = 1
      ALORS
	      nombre_de_pieces = nombre_de_pieces + ((pieces_magiques * 7)+10) - pieces_volees
	      ECRIRE ("semaine numéro ", semaine, " = ", nombre_de_pieces, " pièces restantes / ", (pieces_magiques * 7)+10, " pièces fabriquées / ",pieces_volees, " pièces volées")
      SINON
	      SI semaine > 2 ET semaine < 27
	      ALORS
		      nombre_de_pieces = nombre_de_pieces + ((pieces_magiques * 7)) - pieces_volees
		      ECRIRE ("semaine numéro ", semaine, " = ", nombre_de_pieces, " pièces restantes / ", (pieces_magiques * 7), " pièces fabriquées / ",pieces_volees, " pièces volées")
	      SINON
		      nombre_de_pieces = nombre_de_pieces + ((pieces_magiques * 7)) - (pieces_volees - 1)
	        ECRIRE ("semaine numéro ", semaine, " = ", nombre_de_pieces, " pièces restantes / ", (pieces_magiques * 7), " pièces fabriquées / ",(pieces_volees-1), " pièces volées")
        FINSI
      FINSI
      
   FINPOUR 
	
FIN
print("\n-------------------")
print("PROGRAMME DES PIÈCES D'OR")
print("-------------------\n")

# On demande le nombre de pièces trouvées au départ
pieces_trouvees = int(input("\nVeuillez entrer le nombre de pièces trouvées : "))


# On calcule le nombre de pièces fabriquées par jours avec la machine de grand-père qui est égale à la moitié des pièces trouvées
# // est l'opérateur de division entière
pieces_magiques = pieces_trouvees // 2

# pour répéter 25 fois un caractère
espaces = ' ' * 5

print(f"{espaces}\nLe nombre de \"pieces_magiques\" fabriquées par jours avec la machine de grand-père, est égale à = {pieces_magiques} pièces")

# On demande le nombre de pièces volées chaque semaine par le corbeau
pieces_volees = int(input("\nVeuillez entrer le nombre de pièces volées chaque semaine par le corbeau (au moins 2) : "))


# calcul du nombre de pièces restantes avec 6 mois à x pièces volées et 6 mois à x-1 pièces volées
nombre_de_pieces = (pieces_trouvees) + (pieces_magiques * 365) - (pieces_volees * 26) - ((pieces_volees - 1) * 26)

# On l'affiche
print(f"{espaces}\nLe \"nombre de pièce au bout de 1 an \" est égale à = {nombre_de_pieces} pièces\n")

# On affiche maintenant le nombre de pièce que l'on a par semaine

# On initialise le nombre de pièces calculé précédemment
nombre_de_pieces = 0
for semaine in range(1, 53):
    
    if semaine == 1:
        nombre_de_pieces = pieces_trouvees + (pieces_magiques * 7) - pieces_volees
        print(f"Semaine numéro {semaine} = {nombre_de_pieces} pièces avec {(pieces_magiques * 7)} pièces fabriquées / {pieces_volees} pièces volées")
    elif semaine > 1 and semaine < 27:
        nombre_de_pieces = nombre_de_pieces + (pieces_magiques * 7) - pieces_volees
        print(f"Semaine numéro {semaine} = {nombre_de_pieces} pièces avec {pieces_magiques * 7} pièces fabriquées / {pieces_volees} pièces volées")
    else:
        nombre_de_pieces = nombre_de_pieces + (pieces_magiques * 7) - (pieces_volees - 1)
        print(f"Semaine numéro {semaine} = {nombre_de_pieces} pièces avec {pieces_magiques * 7} pièces fabriquées / {pieces_volees-1} pièces volées")

# on rajoute 1 jour de fabrication de pièces car 52 x 7 donne 364 jours.
print(f"\n la fin de l'année on a {nombre_de_pieces + pieces_magiques}")
    

print("\n-------------------")
print("FIN DU PROGRAMME DES PIÈCES D'OR")
print("-------------------\n")
Turtle
Dessin à inventer
import turtle # bibliothèque turtle

# Taille du canva & placer le canva sur l'écran
turtle.setup(width=500, height=500, startx=0, starty=0) #taille et placement de la fenêtre
espace_dessin = turtle.Turtle() #appel de la fonction "Turtle" du module "turtle" pour créer un canevas (espace vide dans lequel on dessine)

# Lever le stylo pour éviter de dessiner pendant le déplacement
# espace_dessin.penup()
# Cacher la tortue pour ne pas voir la fleche
#espace_dessin.hideturtle()

# La tortue commence au centre (0, 0) d'un plan cartésien x-y
# Le point (x, y) en haut à gauche est (-width/2, height/2)
# espace_dessin.goto(-turtle.window_width()//2, turtle.window_height()//2)

# Redescendre le stylo pour commencer à dessiner
# espace_dessin.pendown()

# definir la vitesse de la tortue de 1 à 10
espace_dessin.speed(1)

# Épaisseur du trait de 1 à 10
espace_dessin.width(5)

# couleur mode
# Configurer le mode de couleur pour accepter des valeurs de 0 à 255
turtle.colormode(255) # permet d'utiliser les valeurs RGB entre 0 et 255.

# le dessin commence à (0,0) selon x,y
espace_dessin.forward(50) # forward : se déplace en face d'elle d'une distance en pixel
espace_dessin.left(90) # Tourne la tortue à gauche d'une valeur en degrés
espace_dessin.forward(50)
espace_dessin.write("Un rond violet", font=("Arial", 24, "normal"))

espace_dessin.begin_fill()
espace_dessin.fillcolor(123, 104, 238)
espace_dessin.circle(20)

espace_dessin.end_fill()

espace_dessin.forward(50)

espace_dessin.pencolor("pink")
espace_dessin.circle(20,90)


espace_dessin.forward(50)
espace_dessin.dot(10,"red")
espace_dessin.penup() # lever le crayon
espace_dessin.goto(150,150) # se déplacer à une coordonnée
espace_dessin.pendown() #reposer le crayon
#espace_dessin.colormode(n) # Initialise le format RGB, n est l'intensité maximale
espace_dessin.pencolor("blue") #color name
espace_dessin.forward(10)

espace_dessin.begin_fill()

espace_dessin.forward(50)
espace_dessin.left(90)
espace_dessin.forward(50)
espace_dessin.left(90)
espace_dessin.forward(50)
espace_dessin.left(90)
espace_dessin.forward(50)
espace_dessin.fillcolor("#1E90FF")
espace_dessin.end_fill()

espace_dessin.write("Un carré bleu", font=("Arial", 14, "normal"))

# Terminer le dessin
turtle.done()
Dessine une fleur
import turtle

# Configurer la fenêtre de dessin
turtle.setup(width=800, height=600)
espace_dessin = turtle.Turtle()

# Paramètres de la tortue
espace_dessin.speed(4)
espace_dessin.width(2) # épaisseur du trait

# Fonction pour dessiner un pétale
def dessiner_petale():
    for i in range(2):
        espace_dessin.circle(100, 60)  # Demi-cercle
        espace_dessin.left(120)

# Dessiner une fleur avec plusieurs pétales
espace_dessin.color("red")
for i in range(6):
    dessiner_petale()
    espace_dessin.right(60)

# Dessiner le centre de la fleur
espace_dessin.penup()
espace_dessin.goto(0, -20)
espace_dessin.pendown()
espace_dessin.color("yellow")
espace_dessin.begin_fill()
espace_dessin.circle(20)
espace_dessin.end_fill()

# Dessiner la tige de la fleur
espace_dessin.penup()
espace_dessin.goto(0, -20)
espace_dessin.setheading(-90)  # Orienter vers le bas
espace_dessin.pendown()
espace_dessin.color("green")
espace_dessin.forward(200)

# Dessiner les feuilles
espace_dessin.setheading(-45)
espace_dessin.begin_fill()
espace_dessin.circle(50, 90)
espace_dessin.left(90)
espace_dessin.circle(50, 90)
espace_dessin.end_fill()

espace_dessin.setheading(-135)
espace_dessin.penup()
espace_dessin.goto(0, -100)
espace_dessin.pendown()

espace_dessin.begin_fill()
espace_dessin.circle(50, 90)
espace_dessin.left(90)
espace_dessin.circle(50, 90)
espace_dessin.end_fill()

# Cacher la tortue
espace_dessin.hideturtle()

# Terminer le dessin
turtle.done()
Créer du mouvement avec la balle
import turtle

# Configuration de l'écran
screen = turtle.Screen()
screen.title("Animation de la balle avec Turtle")
screen.bgcolor("white")
screen.setup(width=600, height=600)

# Créer la balle
balle = turtle.Turtle()
balle.shape("circle")
balle.color("blue")
balle.penup()  # Ne pas dessiner la trace
balle.speed(3)  # Vitesse maximale pour le mouvement lisse

# Définir la vitesse initiale de la balle
vx = 6  # Vitesse sur l'axe x
vy = 6  # Vitesse sur l'axe y

# Définir un temps maximum pour arrêter l'animation (en millisecondes)
temps_max = 5 * 1000  # 60 secondes en millisecondes
temps_ecoule = 0  # Compteur pour le temps écoulé

# Fonction pour déplacer la balle
def deplacer_balle():
    global vx, vy, temps_ecoule

    # Obtenir les coordonnées actuelles de la balle
    x, y = balle.xcor(), balle.ycor()

    # Calculer les nouvelles coordonnées
    x += vx
    y += vy

    # Vérifier les collisions avec les bords
    if x > 290 or x < -290:  # Collision avec les côtés gauche ou droit
        vx = -vx  # Inverser la direction horizontale
    if y > 290 or y < -290:  # Collision avec le haut ou le bas
        vy = -vy  # Inverser la direction verticale

    # Déplacer la balle à sa nouvelle position
    balle.setx(x)
    balle.sety(y)

    # Augmenter le temps écoulé à chaque appel
    temps_ecoule += 40  # Ajout de 20 ms (le délai défini dans ontimer)

    # Continuer l'animation tant que moins de temps_max se sont écoulées
    if temps_ecoule < temps_max:
        screen.ontimer(deplacer_balle, 10)  # Refaire cette action dans 20 ms
    else:
        print("Fin de l'animation.")
        # balle.goto(0, 0)  # Amener la tortue au centre de l'écran
        balle.clear()
        balle.hideturtle()  # Cacher la tortue (balle)
        balle.write("Fin de l'animation !", align="center", font=("Arial", 16, "normal"))  # Écrire sur la fenêtre
        screen.ontimer(screen.bye, 5000)  # Fermer la fenêtre après 3 secondes



# Démarrer l'animation
deplacer_balle()

# Maintenir la fenêtre ouverte
screen.mainloop()
Les fonctions
  • Une fonction réalise un calcul et renvoie le résultat. Elle peut être appelée à plusieurs reprise par un programme.
    • Par exemple : faire une fonction qui donne le tarif en fonction de la saison en cours

    fonction calcul_tarif(pain_nom, achat_date)

  • Lors d’un appel à la fonction des valeurs particulières (arguments) sont données à la fonction (ici le nom du pain et la date d’achat)

#4 - API

Sur Google Collab j’ai un exercice avec API météo, capitale et heure locale

💡

Voir le Drive, dossier “cours” / “youngbank”

En python

👉 Comment faire pip install requests sur Windows ?

C’est très simple, voici pas à pas comment installer la bibliothèque requests sur Windows, directement depuis ton ordinateur.


✅ 1. Ouvre l’invite de commandes Windows (aussi appelée “Terminal” ou “CMD”)

Méthode rapide :

• Appuie sur Touche Windows + R

• Tape cmd

• Appuie sur Entrée

Tu verras une fenêtre noire s’ouvrir avec un curseur qui clignote. C’est ici qu’on tape les commandes.


✅ 2. Tape cette commande :

pip install requests
ou
pip3 install requests

Puis appuie sur Entrée.


🔎 Que va-t-il se passer ?

• Windows va chercher la bibliothèque requests sur Internet (via le Python Package Index),

• et l’installer dans ton environnement Python.


✅ 3. Si tout va bien, tu verras un message du style :

Successfully installed requests-x.x.x

Cela veut dire que c’est bon ! 🎉


❗ Si tu as une erreur de type : pip n’est pas reconnu comme une commande interne...

➡ Cela signifie que Python ou pip ne sont pas encore bien installés/configurés sur ton PC.

💡 Solution rapide :

• Vérifie que tu as bien installé Python avec l’option “Add Python to PATH” cochée lors de l’installation.

• Ou essaie :

python -m pip install requests

(cela fonctionne même si pip seul ne marche pas encore)


🔍 Vérifier si tout fonctionne :

Tu peux tester dans ton terminal :

pip --version

ou :

python -m pip --version

➡ Si tu obtiens une réponse, c’est que pip est bien installé ✔







Ce message d’erreur que tu vois est très courant sur macOS Ventura ou Sonoma, surtout lorsque Python est géré par Homebrew ou macOS lui-même, et que tu essaies d’installer un paquet dans l’environnement système.

➡️ C’est une protection contre la modification directe de l’environnement Python de macOS.


💡 Erreur :

error: externally-managed-environment
This environment is externally managed

Cela signifie : “Tu n’as pas le droit d’installer des paquets directement dans l’environnement système de Python”.


✅ Solution propre (recommandée) : créer un environnement virtuel

1. Va dans ton terminal

cd ton_dossier_de_travail

2. Crée un environnement virtuel :

python3 -m venv venv

3. Active l’environnement :

source venv/bin/activate

Tu verras alors ton terminal changer comme ceci :

(venv) ton_nom@MacBook ... %

4. Installe requests dedans :

pip install requests

✅ Et là tout fonctionnera parfaitement, sans erreur “externally managed”.


🧠 Pourquoi utiliser un environnement virtuel ?

• Tu n’as pas besoin de modifier le Python du système

• Chaque projet peut avoir ses propres bibliothèques isolées

• C’est propre, sécurisé et recommandé (surtout pour l’enseignement ou les projets personnels)


✨ Bonus : Pour sortir de l’environnement

deactivate

Souhaites-tu que je t’en fasse une fiche “Créer et utiliser un environnement virtuel sur macOS” en PDF aussi ?

Ou que je te montre comment faire tout ça depuis VS Code directement, sans passer par le terminal ? 😊

💚

Agence digitale Parisweb.art
Tout savoir sur Julie, notre directrice de projets digitaux : LinkedIn