France – iOi
Table des matières
NIVEAU 1
N1_C1. Affichage de texte, suite d’instructions
1) Hello world! :
print("Hello world!")
2) Présentation :
print("Coucou !")
print("Je m'appelle Camthalion")
print("Ma devise est 'Parler peu mais parler bien'.")
Afficher du texte : erreurs possibles :
ATTENTION AUX PARENTHESES !
ATTENTION AUX GUILLEMENTS !
3) Plan de la montagne :
print("Tout droit tu grimperas,")
print("La clé tu trouveras,")
print("Habile tu seras,")
print("Quand tu les porteras,")
print("Et avec le chef tu reviendras !")
4) Dans le fourré :
from robot import *
haut()
haut()
haut()
droite()
droite()
bas()
bas()
droite()
Mouvements : nécessité du module :
Si on oublie la ligne qui fournit les instructions pour bouger le robot, comme dans le programme suivant :
haut()
droite()
bas()
gauche()
on obtient une erreur :
line 1, in
haut()
NameError: name 'haut' is not defined
5) Empilement de cylindres :
from robot import *
deplacer(1, 2)
deplacer(1, 3)
deplacer(2, 3)
deplacer(1, 2)
deplacer(3, 1)
deplacer(3, 2)
deplacer(1, 2)
deplacer(1, 3)
deplacer(2, 3)
deplacer(2, 1)
deplacer(3, 1)
deplacer(2, 3)
deplacer(1, 2)
deplacer(1, 3)
deplacer(2, 3)
Recette secrète :
from robot import*
remplir(3)
transferer(3, 5)
remplir (3)
transferer(3,5)
vider(5)
transferer(3, 5)
remplir(3)
transferer(3, 5)
N1_C2. Répétitions d'instructions
1) Punition :
for loop in range (135) :
print("Je dois respecter le Grand Sorcier.")
Répétition : erreurs possibles :
Il est facile de se tromper dans les boucles lorsqu'on n'a pas l'habitude. Ainsi, si on oublie le « : » à la fin de la ligne, on obtient une erreur :
for loop in range(5)
print("Bonjour !")
SyntaxError: invalid syntax
Et si l'on oublie d'indenter, c'est-à-dire si on oublie les trois espaces, on obtient également une erreur :
for loop in range(5):
print("Bonjour !")
SyntaxError: expected an indented block
Face à ce type d'erreur, on pensera donc à vérifier que le deux-points est bien présent et que l'indentation a été faite.
Indentation : la touche tabulation :
for loop in range(5):
print("Bonjour !")
print("Au revoir !")
2) Mathématiques de base :
for loop in range(13):
print("9 * 8 = 72")
3) Transport d'eau :
from robot import*
gauche()
gauche()
print("Bonjour, laissez-moi vous aider")
ramasser()
for loop in range(32):
droite()
deposer()
4) Le secret du Goma :
from robot import*
for loop in range(15):
droite()
ramasser()
droite()
deposer()
Répétition : cohérence de l'indentation :
Attention à toujours utiliser 3 espaces pour indenter le code. Si l'indentation n'est pas toujours la même, vous obtiendrez une erreur :
for loop in range(2):
print("Bonjour !")
print("Comment vas-tu ?")
SyntaxError: unindent does not match any outer indentation level
5) Sisyphe :
from robot import*
for loop in range(21):
haut()
droite()
for loop in range(21):
gauche()
bas()
6) Page d'écriture :
for loop in range(30):
print("a_", end = "")
print()
for loop in range(30):
print("b_", end = "")
print()
for loop in range(30):
print("c_", end = "")
7) Jeu de dames :
for loop in range(20):
for loop in range(20):
print("OX", end = "")
print()
for loop in range(20):
print("XO", end = "")
print()
8) Mont Kailash :
from robot import*
for loop in range(108):
for loop in range(13):
haut()
for loop in range(13):
droite()
for loop in range(13):
bas()
for loop in range(13):
gauche()
9) Vendanges :
from robot import*
for loop in range(20):
ramasser()
for loop in range(15):
droite()
deposer()
for loop in range(15):
gauche()
Insérer des commentaires :
En Python, on insère un commentaire avec le caractère # (un dièse). Voici un exemple :
# Affiche un rectangle rempli de X
for loop in range(5):
for loop in range(10):
print("X", end = "")# pas de retour à la ligne ici
print()
10) Le Grand Événement :
from robot import*
for loop in range(9):
droite()
haut()
for loop in range(4):
for loop in range(8):
gauche()
haut()
for loop in range(8):
droite()
haut()
for loop in range(9):
gauche()
for loop in range(9):
bas()
N1_C3. Calculs et découverte des variables
1) Réponds ! :
print(42)
2) L'éclipse :
print(12581 - 11937)
3) Bonbons pour tout le monde :
print((25+30+27+22-8)*3)
4) L'algoréathlon :
distance = 42
print(distance, end = " ")
print(2 * distance, end = " ")
print(3 * distance)
5) Cour de récréation :
distance = ((17 * 5) + (7 * 2) + (5 * 1) + (2 * 2))
print(distance * distance)
print(distance * 4)
6) Une partie de cache-cache :
numero = 1
print(numero)
for loop in range(99):
numero = numero +1
print(numero)
print("J'arrive !")
Variables : suppléments :
Plusieurs variables
largeur = 210
longueur = 297
surface = longueur * largeur
print(surface)
Variable inexistante
Si on fait appel à une variable qui n'existe pas (ou pas encore), on obtient une erreur. Par exemple, le programme suivant définit une variable longueur, et tente ensuite d'afficher le contenu d'une variable nommée largeur qui n'a jamais été définie.
longueur = 297
print(largeur)
NameError: name 'largeur' is not defined
Il faut faire particulièrement attention au fait que les minuscules et majuscules ne sont pas considérées comme équivalentes. Ainsi, la variable nommée longueurFil n'a strictement rien à voir avec la variable nommée longueurfil.
longueurFil = 10
print(longueurfil)
NameError: name 'longueurfil' is not defined
Si on rencontre une erreur de la forme NameError: name 'xxxxx' is not defined, on pensera donc à vérifier que l'on a bien initialisé la variable correspondante et que l'on a correctement saisi l'identifiant aux deux endroits.
Faute de frappe à l'affectation
Observez le programme suivant, dans lequel on a commis une faute de frappe sur la troisième ligne :
taille = 180
print(taille)
tauille = taille + 20
print(taille)
7) Progresser par l'erreur :
print("V")
print("V")
print("I")
print("I")
print("V")
print("I")
print("I")
8) Décollage de fusée :
compte = 100
for loop in range(101):
print(compte)
compte = compte - 1
print("Décollage !")
9) Invasion de batraciens :
compte = 1337
for loop in range(12):
compte = compte * 2
print(compte)
10) Kermesse :
bonbon = 1
bonbon2 = 1
print(bonbon)
for loop in range(49):
bonbon = bonbon + 1
bonbon2 = bonbon2 + bonbon
print(bonbon2)
Mettre à profit les identifiants :
prixPommes <- 32 * 90
prixPêches <- 12 * 96
prixAubergines <- 23 * 120
prixCarottes <- 17 * 102
prixPatates <- 22 * 85
Afficher prixPommes + prixPêches + prixAubergines + prixCarottes + prixPatates
11) Course avec les enfants :
from robot import *
droite()
ramasser()
gauche()
deposer()
for loop in range(2):
droite()
ramasser()
for loop in range(2):
gauche()
deposer()
for loop in range(3):
droite()
ramasser()
for loop in range(3):
gauche()
deposer()
for loop in range(4):
droite()
ramasser()
for loop in range(4):
gauche()
deposer()
for loop in range(5):
droite()
ramasser()
for loop in range(5):
gauche()
deposer()
for loop in range(6):
droite()
ramasser()
for loop in range(6):
gauche()
deposer()
for loop in range(7):
droite()
ramasser()
for loop in range(7):
gauche()
deposer()
for loop in range(8):
droite()
ramasser()
for loop in range(8):
gauche()
deposer()
for loop in range(9):
droite()
ramasser()
for loop in range(9):
gauche()
deposer()
for loop in range(10):
droite()
ramasser()
for loop in range(10):
gauche()
deposer()
12) Construction d'une pyramide :
cube1 = 1
ligne3 = cube1 + 2
cube2 = ligne3 * ligne3 * ligne3
ligne5 = ligne3 + 2
cube3 = ligne5 * ligne5 * ligne5
ligne7 = ligne5 + 2
cube4 = ligne7 * ligne7 * ligne7
ligne9 = ligne7 + 2
cube5 = ligne9 * ligne9 * ligne9
ligne11 = ligne9 + 2
cube6 = ligne11 * ligne11 * ligne11
ligne13 = ligne11 + 2
cube7 = ligne13 * ligne13 * ligne13
ligne15 = ligne13 + 2
cube8 = ligne15 * ligne15 * ligne15
ligne17 = ligne15 + 2
cube9 = ligne17 * ligne17 * ligne17
cubetotal = cube1 + cube2 + cube3 + cube4 + cube5 + cube6 + cube7 + cube8 + cube9
print(cubetotal)
13) Table de multiplication :
colonne = 1
ligne = 2
for loop in range(20):
print(1 * colonne, end = " ")
print(2 * colonne, end = " ")
print(3 * colonne, end = " ")
print(4 * colonne, end = " ")
print(5 * colonne, end = " ")
print(6 * colonne, end = " ")
print(7 * colonne, end = " ")
print(8 * colonne, end = " ")
print(9 * colonne, end = " ")
print(10 * colonne, end = " ")
print(11 * colonne, end = " ")
print(12 * colonne, end = " ")
print(13 * colonne, end = " ")
print(14 * colonne, end = " ")
print(15 * colonne, end = " ")
print(16 * colonne, end = " ")
print(17 * colonne, end = " ")
print(18 * colonne, end = " ")
print(19 * colonne, end = " ")
print(20 * colonne)
colonne = colonne +1
Suivre l'évolution des variables d'un programme :
nbPersonnes = 3
nbJours = 4
prixSéjour = 0
prixJournée = 1
for loop in range(nbJours):
prixSéjour = prixSéjour + prixJournée
prixJournée = prixJournée + 2
prixSéjour = prixSéjour + 14
print("Prix par personne :", prixSéjour // nbPersonnes)
N1_C4. Lecture de l'entrée
Des programmes interactifs :
nom <- lireLigne()
année <- lireEntier()
Afficher nom, ", vous aviez ", 2000 - année, " ans en l'an 2000 !"
1) Récoltes :
longueur = int(input())
print(longueur * longueur * 23)
2) Retraite spirituelle :
Jour = int(input())
print(Jour * 3600 * 16)
3) Âge des petits-enfants :
âgeCadet = int(input())
âgeAîné = int(input())
différence = âgeAîné - âgeCadet
print(différence)
Représentation de l'entrée d'un programme :
nombre = int(input())
print(nombre - 5)
print(nombre * 2)
Erreur si l'on ne donne pas un entier :
Imaginons que le programme demande un entier mais que l'utilisateur fournisse un texte, par exemple « coucou ». Le programme déclare alors une erreur, car « coucou » ne peut pas être interprété comme un nombre.
taille = int(input())
print(taille)
4) Encore des punitions :
nombre = int(input())
for loop in range (nombre):
print("Je dois suivre en cours")
5) Graduation de thermomètres :
nombre = int(input())
nombre2 = int(input())
for loop in range (nombre2 - nombre +1):
print(nombre)
nombre = nombre + 1
6) Jeu de calcul mental :
nbNombres = int(input())
tour = 0
départ = 66
for loop in range(nbNombres):
tour = tour + 1
départ = tour * départ
print (départ)
7) La Grande Braderie :
positionDepart = int(input())
largeurEmplacement= int(input())
nbVendeurs = int(input())
print(positionDepart)
for loop in range(nbVendeurs):
positionDepart = positionDepart + largeurEmplacement
print(positionDepart)
Lecture d'entiers : autre erreur possible :
valeur1 = input()
valeur2 = input()
print(valeur1 + valeur2)
8) Bétail :
A = int(input())
B = int(input())
C = int(input())
D = int(input())
E = int(input())
F = int(input())
G = int(input())
H = int(input())
I = int(input())
J = int(input())
K = int(input())
L = int(input())
M = int(input())
N = int(input())
O = int(input())
P = int(input())
Q = int(input())
R = int(input())
S = int(input())
T = int(input())
print(A +B +C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T)
9) Socles pour statues :
niveauMax = int(input())
niveauMin = int(input())
socle = 0
for loop in range(niveauMax - niveauMin + 1):
socle = socle + niveauMax * niveauMax
niveauMax = (niveauMax -1)
print(socle)
Instructions condensées :
longueur = int(input())
largeur = int(input())
périmètre = (longueur + largeur) * 2
aire = longueur * largeur
print(périmètre, end = " ")
print(aire)
longueur = int(input())
largeur = int(input())
périmètre = (longueur + largeur) * 2
aire = longueur * largeur
print(périmètre, aire)
10) Le plus beau Karva :
nbCompetition = int(input())
for iValeur in range(nbCompetition):
poids = int(input())
age = int(input())
cornes = int(input())
garrot = int(input())
calcul = (cornes * garrot + poids)
print(calcul)
Erreur si on lit trop de choses :
largeur = int(input())
hauteur = int(input())
profondeur = int(input())
print(largeur * hauteur * profondeur)
Portée d'une variable :
nbValeurs = int(input())
for iValeur in range(nbValeurs):
laValeur = int(input())
print(laValeur)
N1_C5. Tests et conditions
1) Transport des bagages :
nbPaquets = int(input())
poidsPaquet = int(input())
if nbPaquets * poidsPaquet > 105:
print("Surcharge !")
2) Bornes kilométriques :
numéroMatin = int(input())
numéroSoir = int(input())
écart = numéroSoir - numéroMatin
if écart < 0:
écart = -écart
print(écart)
3) Tarifs dégressifs :
heure = int(input())
prix = 10 + 5 * heure
if prix > 53:
prix = 53
print(prix)
4) Bagarre générale :
superficieArignon = int(input())
superficieEvaran = int(input())
if superficieArignon > superficieEvaran + 10:
print("La famille Arignon a un champ trop grand")
if superficieEvaran > superficieArignon + 10:
print("La famille Evaran a un champ trop grand")
5) Tarif du bateau :
âge = int(input())
if âge < 21:
print("Tarif réduit")
else:
print("Tarif plein")
6) Traversée du pont :
premierDé = int(input())
secondDé = int(input())
somme = premierDé + secondDé
if somme >= 10:
print("Taxe spéciale !")
print(36)
else:
print("Taxe régulière")
print(2 * somme)
7) Concours de tir à la corde :
nbPersonnes = int(input())
totalÉquipe1 = 0
totalÉquipe2 = 0
for loop in range(nbPersonnes):
poids1 = int(input())
poids2 = int(input())
totalÉquipe1 = totalÉquipe1 + poids1
totalÉquipe2 = totalÉquipe2 + poids2
if totalÉquipe1 > totalÉquipe2:
print("L'équipe 1 a un avantage")
else:
print("L'équipe 2 a un avantage")
print("Poids total pour l'équipe 1 :", totalÉquipe1)
print("Poids total pour l'équipe 2 :", totalÉquipe2)
8) Mot de passe du village :
tentative = int(input())
if tentative == 64741:
print("Bon festin !")
else:
print("Allez-vous-en !")
N1_C6. Structures avancées
Structures imbriquées :
cible = int(input())
if cible >= 0:
for numéro in range(cible + 1):
print(numéro)
else:
print("Rien à faire")
1) Villes et villages :
cible = int(input())
tour = 0
for loop in range(cible):
ville = int(input())
if ville > 10000:
tour = tour + 1
print(tour)
2) Planning de la journée :
Solution de Microsoft COPILOT :
Solution dans France ioi :
depart = int(input("Enter your position: "))
nbVillage = int(input("Enter number of villages: "))
comptage = 0
posActuelle = int(input())
nbVillages = int(input())
nbAccessibles = 0
for loop in range(nbVillages):
for _ in range(nbVillage):
village_position = int(input("Enter village position: "))
if abs(village_position - depart) <= 50:
comptage += 1
print("Number of villages within 50 units:", comptage)
posVillage = int(input())
ecart = posActuelle - posVillage
if ecart < 0:
ecart = -ecart
if ecart <= 50:
nbAccessibles = nbAccessibles + 1
print(nbAccessibles)
3) Étape la plus longue :
4) Calcul des dénivelées :
5) Type d'arbres :
6) Tarifs de l'auberge :
7) Protection du village :
8) Le juste prix :
N1_C7. Conditions avancées, opérateurs booléens
1) Espion étranger :
2) Maison de l'espion :
3) Nombre de jours dans le mois :
4) Amitié entre gardes :
5) Nombre de personnes à la fête :
6) Casernes de pompiers :
7) Personne disparue :
8) La grande fête :
9) L'espion est démasqué :
10) Zones de couleurs :
N1_C8. Répétitions conditionnées
1) Département de médecine : contrôle d'une épidémie :
2) Administration : comptes annuels :
3) Département de pédagogie : le « c'est plus, c'est moins » :
4) Département d'architecture : construction d'une pyramide :
5) Département de chimie : mélange explosif :
NIVEAU 2
N2_C1. Nombres à virgules et autres outils
1) Origami :
2) Conversions de distances :
3) Comparatif de prix :
4) Moyenne des notes :
A – Faire des arrondis (inférieur et supérieur)
1) Augmentation de la population :
2) Construction de maisons :
B – Faire des arrondis (au plus proche)
1) Soirée orageuse :
2) Augmentation des taxes :
C – Arithmétique de base
1) Achat de livres :
2) Une belle récolte :
3) La roue de la fortune :
N2_C2. Découverte des tableaux
1) Préparation de l'onguent :
2) Liste de courses :
3) Grand inventaire :
4) Étude de marché :
5) Répartition du poids :
6) Visite de la mine :
7) Journée des cadeaux :
8) Course à trois jambes :
9) Banquet municipal :
10) Choix des emplacements :
N2_C3. Chaînes de caractères
A – Chaînes complètes
1) Petites fiches et gros travail :
2) Priorité alphabétique :
3) Une ligne sur deux :
4) Résumés de livres :
5) Lire ou ne pas lire, telle est la question :
B – Mots
1) Fiches d’inscription :
2) Analyse de fréquence :
C – Caractères
1) Impression d’étiquettes :
2) Écriture en miroir :
3) Inscription d’étudiants :
4) ngms sns vlls :
5) La bataille :
6) Analyse d’une langue :
7) Sans espaces :
N2_C4. Fonctions
1) Code secret deux fois :
2) Deux codes secrets :
3) Dentelle :
4) Motif rectangulaire :
5) Le plus petit de deux entiers :
6) Phénomène numérique :
7) Distance euclidienne :
8) Formes creuses :
9) Convertisseur d'unités :
N2_C5. Programmer sur son ordinateur
NIVEAU 3
N3_C1.
N3_C2.
N3_C3.
N3_C4.
N3_C5.
N3_C6.
N3_C7.
N3_C8.
N3_C9.
N3_C10.
N3_C11.
NIVEAU 4
N4_C1.
N4_C2.
N4_C3.
N4_C4.
N4_C5.
N4_C6.
N4_C7.
N4_C8.
N4_C9.
NIVEAU 5
N5_C1.
N5_C2.
N5_C3.
N5_C4.
N5_C5.
N5_C6.
N5_C7.
N5_C8.
N5_C9.
NIVEAU 6
N6_C1.
N6_C2.
N6_C3.
N6_C4.
N6_C5.
N6_C6.
N6_C7.