Imprimer
Catégorie : Programmation Python - STAV
Affichages : 6458

Objectif

Les défis seront ajoutés au fil de notre inspiration (celle de mes collègues de maths et la mienne). A ce jour je ne connais pas le nombre de niveaux qu'il y aura.

Se préparer au CCF de maths de terminale. La note de service DGER/SDPFE/2019-702 du 10/10/2019 nous dit qu'en classe de terminale vous serez mangé à cette sauce:
(voir la page 20 du document - page 21 du pdf)

La situation d'évaluation a une durée de 2 heures et 45 minutes et se décompose en deux parties indépendantes :
• une partie pratique de 45 minutes sur poste informatique sur 5 points ;
• une partie écrite de 2h sur 15 points.

Les deux parties sont réalisées dans la même journée.

Pour la partie pratique, le candidat est amené à réaliser sur ordinateur et de façon diversifiée, des travaux portant sur l’objectif 2 du module C4 parmi :
• l’écriture d’une fonction simple en langage Python,
• la complétion, l’amélioration ou la correction d’un programme,
• la traduction d’un algorithme en langage Python,
• l’organisation d’une feuille de calcul.

Pour la réalisation des défis petits et grands, vous avez la carte mentale en pièce jointe au format Freeplane ou pdf.


Défi boucle bornée

Je veux obtenir ceci un affichage équivalent à la copie d'écran du dessous.

En utilisant une boucle et le symbole *. Avant de vous lancer, testez donc le script du dessous.

a="*"
print (a*5)
for i in range (6):
    print(i)

 


Défi Turtle

Peut être qu'un jour vous ferez des tests logiques du genre "dessiner la 5ème figure. Vous me voyez venir ;)... Je voudrais en complétant le script du dessous obtenir l'étoile qui a des branches à 4 points. Saurez-vous le scripter?

Pour vous aider je vous donne ceci, mais vous n'obtiendrez que les 3 premières figures... Vous noterez cependant que la tortue est à la bonne position pour le 4ème dessin (elle est gentille;). Pour les commandes sous turtle, vous disposez d'une Url dans le script du dessous, descendre un peu dans la page...

# liste des commandes de turtle
# https://docs.python.org/fr/3/library/turtle.html
from turtle import *
dot()
for i in range(4):
    penup()
    fd(10)
    pendown()
    dot()
    penup()
    fd(-10)
    left(90)


fd(50)
dot()
left(45)

for i in range(4):
    penup()
    fd(10)
    pendown()
    dot()
    penup()
    fd(10)
    pendown()
    dot()
    penup()
    fd(-20)
    left(90)

left(-45)
fd(60)
dot()


for i in range(4):
    penup()
    fd(10)
    pendown()
    dot()
    penup()
    fd(10)
    pendown()
    dot()
    penup()
    fd(10)
    pendown()
    dot()
    penup()
    fd(-30)
    left(90)
    

fd(70)
dot()

 


Défi fonction

Je veux maintenant obtenir les 10 premières valeurs de 2**n, n allant de 0 à 9 en utilisant une fonction simple. Avant de vous lancer, testez le script du dessous.

def puiss(n):
    resultat=2**n
    return(resultat)

print(puiss(4))
print(2**4)

 


Défi correction

Mon programme ne fonctionne pas. Pourtant il est simple, je demande à l'utilisateur de saisir une valeur et mon programme doit retourner le triple de la valeur saisie. Pour vous aider, testez le type(valeur) et peut être que vous comprendrez. Au fait si vous voulez rire, suivre ce lien ;)

Pour l'instant j'obtiens cela:

Mais je veux obtenir ça:

valeur=input("Saisir un entier. Valeur=")
triple=valeur*3
print(triple)
# aide
print(valeur,type(valeur))
print(triple,type(triple))
b=2
print(b,type(b))
c=int(triple)
print(c,type(c))

 


Défi niv-1 une pyramide d'étoile

Je voudrais obtenir dans mon shell une pyramide mais pour l'instant mes étoiles sont justifiées à droite. Saurez-vous résoudre mon problème?

Notez que cela ne fonctionne que pour une base contenant un nombre impair d'étoile pour la base (ici j'en ai 7)!

a="*"
b=" "

for i in range (8):
    print(b*(8-i),i*a)

 


Défi niv-1 un carré d'entier à la volée

Je voudrais obtenir l'affichage d'une matrice contenant les valeurs de 1 à 25 rangées par colonne de 5 comme dans la capture suivante. Vous noterez que j'utilise une liste de nom carre

Pour vous aidez je vous donne le script du dessous mais il ne donne qu'un carré de 25 "zéro".

n=0

for i in range (5):
    carre=[]
    for j in range (5):
        n=n
        carre.append(n)
    print(carre) 

 


Défi niv-1 Turtle - étoile, vers l'infini et au delà

Ici je veux pouvoir dessiner n'importe quelle étoile en choisissant le nombre de point par branche. Dans la copie d'écran du dessous j'ai 8 points car n=8 dans le début de mon script (je ne compte pas le point central).

Je vous conseille, avant de vous lancer dans ce défi, de méditer sur le défi Turtle précédent, histoire de prendre en main la navigation de la tortue. Par contre si vous l'avez déjà résolu, alors le capitaine T.Kirk vous souhaite bonne chance ;)))

 

# liste des commandes de turtle
# https://docs.python.org/fr/3/library/turtle.html
# Avant de vous lancer dans ce défi je vous conseille de faire celui-ci
# https://www.ipa-troulet.fr/cours/index.php/cours-dinformatique/bac-technologique/138-programmation-python-stav/584-stav-python-quelques-defis?start=2

n=8

from turtle import *
dot()

#comprendre que si n est pair alors angle d'attaque de la tortue de 45°
if n%2==0:
    left(45)
'''
pour la suite j'ai eu besoin de :
    2 boucles bornées
    penup(), pendown(), fd(), dot(), left()
'''

 

 


Défi niv-2 le triangle de Pascal

Je veux obtenir ce triangle qui se calcule en utilisant la logique visible sur cette image - cliquez pour voir.

Pour l'instant j'ai cela dans ma besace mais le script me donne pour chaque ligne une suite d'entiers. Vous noterez que j'utilise deux listes et que la liste carre contient une sous-liste ligne. Les prints finaux du script sont là pour vous faire comprendre la logique d'accès aux valeurs, à savoir carre[ligne][colonne] (ne pas oublier que python commence par l'indice 0 ;)

n=0
carre=[]
for i in range (5):
    ligne=[]
    
    for j in range (5):
        if j==i:
            n=1
        elif j>i:
            n=0
        else:
            n=n+1
        ligne.append(n)
    
    print(ligne)    
    carre.append(ligne)

print("*****")
print(carre)
print("*****")
print(carre[4])
print("*****")
print(carre[4][3])
print("*****")
print(i,j,"***",carre[i][j])  
Pièce(s) jointe(s)
Download this file (STAV Python.mm)STAV Python.mm[ ]20 kB
Download this file (STAV Python.pdf)STAV Python.pdf[ ]1921 kB