Exercices de programmation en Python

Structures algorithmiques de base: tests, boucles, fonctions, …



Algorithmes et programmes généraux

Exercice 1:
  1. Que fait le programme suivant:
    n=int(input("Combien de semaines avant les vacances ?"))
    print("Plus que "+str(n)+" semaines avant les vacances !")
    
  2. Compléter ce programme pour qu'il affiche aussi le nombre de jours avant les vacances, puis le nombre de jours de cours avant les vacances ainsi que le nombre de week-ends.
  3. Modifier ce programme pour que l'affichage soit toujours sans faute (et s'il n'y a pas plusieurs semaines ou plusieurs jours, et un seul week-end)

Remarque: l'éventuel problème d'affichage des accents est un problème de codage des caractères; l'informatique ayant plus ou moins été créée en milieu anglophone, les caractères accentués ne sont pas toujours pris en charge naturellement.
Pour régler le problème, ajouter la ligne suivante au début de vos programmes:
# -*- coding: utf-8 -*-

Exercice 2:
Le programme suivant permet de récupérer et afficher la date actuelle et de demander une date à l'utilisateur:
from datetime import datetime
date=datetime.now()
ja=date.day;ma=date.month;aa=date.year
# ja, ma, et aa sont: jour, mois et année actuels
print("Nous sommes le: "+str(ja)+"/"+str(ma)+"/"+str(aa))

dn=input('Votre date de naissance ? (format jj/mm/aaaa) :')
dn=dn.split('/');
jn=int(dn[0]);mn=int(dn[1]);an=int(dn[2])
# jn, mn, et an sont: jour, mois et année de naissance saisis
  1. Tester le programme précédent. Compléter le programme pour qu'il affiche les différentes valeurs des jours, mois et années.
  2. Compléter le programme pou qu'il demande à l'utilisateur sa date de naissance et affiche en retour son age.
  3. Compléter ce programme pour qu'il affiche dans combien de mois est l'anniversaire de la personne. (et un message spécial si l'anniversaire est ce mois, dans quel cas on affiche dans combien de jours est la fête).

Compteurs et sommes

Exercice 3:
  1. Qu'affiche le programme suivant:
    n=int(input("Entrer n: "))
    c=0
    for i in range(n+1):
        c=c+1
        print("c= ",c)
    
    Remarque: la variable c précédente s'appelle un compteur, et permet donc de compter à chaque fois que le programme "passe" par cette ligne.
  2. Dans le programme suivant, la fonction randint(1,10) permet d'obtenir un nombre entier aléatoire entre 1 et 10.
    Que fait alors le programme suivant ?
    from random import randint 
    
    for i in range(5):
        a=randint(1,10)
        b=randint(1,10)
        r=int(input(str(a)+" * "+str(b)+" = ? "))
        if r==a*b:
            print("bien")
    
  3. Compléter ce programme pour qu'il affiche un message d'erreur lorsque la réponse donnée n'est pas la bonne.
  4. Modifier ce programme pour qu'il compte, et affiche à la fin, le nombre de bonnes réponses.
Exercice 4:
  1. Que calcule le programme suivant:
    n=int(input("Entrer n: "))
    s=0
    for i in range(1,n+1):
        s=s+i
        print("i= ",i, " - s= ",s)
    
  2. Modifier le programme précédent pour qu'il calcule, à un nombre n donné (ou demandé à l'utilisateur), les sommes:
    • S = 1 + 1/2 + 1/3 + 1/4 + 1/5 + …
    • T = 1 + 1/22 + 1/32 + 1/42 + 1/52 + …
    • U = 1 + 1/21 + 1/22 + 1/23 + 1/24 + …
  3. Qu'observe-t'on pour les valeurs de ces sommes lorsque n est de plus en plus grand (n = 10, n = 100, n = 1000, …) ?
Exercice 5:
  1. Que calcule et affiche le programme suivant ?
    def f(x):
        y=3*x**2+2
        return y
    
    print(f(1))
    
    x=3
    print(f(x))
    
    Rappel / remarque: L'opération notée ** en python est la puissance, souvent notée ^ dans les autres langages et calculatrices. Par exemple, 2**3=2*2*2=8.
    On définit ici une fonction. (re)Voir éventuellement le cours sur les fonctions.
  2. On considère maintenant la fonction: P(x) = x4 − 101324x3 − 101323x2 − 202650x.
    On sait que l'équation P(x) = 0 a une solution qui est un nombre entier strictement positif.
    Trouver cette solution.
Exercice 6:
  1. Que fait le programme suivant ? Qu'affiche-t'il ?
    from random import randint 
    d=randint(1,6)
    if (d==6): 
       print("Gagné")
    else:
       print("Dommage")
    
  2. Modifier le programme précédent, et créer un programme qui lance 10 fois un dé et qui compte le nombre de 6 obtenus.
    Calculer et afficher le pourcentage de 6 obtenus.

    Que devient ce pourcentage si on lance 100 fois, ou 1000 fois, ou 10000 fois, …, le dé ?

Avec des listes et chaînes de caractères

Exercice 7:
  1. Que font les programmes suivants:
    s="je vais travailler ce soir" 
    for i in range(1,10):
        print(s)
    
    et
    s="je vais travailler ce soir" 
    print(s*10)
    
    Le chaîne spéciale "\n" permet, dans une chaîne de caractères, d'aller à la ligne.
    Essayer:
    s="je vais travailler ... \n ... ce soir\n\n" 
    print(s*10)
    
  2. Écrire un programme qui affiche les lignes ci-dessous, avec 5 lignes, puis 10 lignes, puis n lignes, n étant demandé à l'utilisateur:
    * 
    **
    ***
    ****
    *****
    ...         
    
  3. Modifier ce programme pou'il affiche maintenant le "sapin" ci-dessous, à 5 lignes, puis 10 lignes, puis n lignes, n étant demandé à l'utilisateur:
        *
       ***
      *****
     *******
    *********
    ...
    
Exercice 8:
  1. Quels sont les affichages successifs du programme suivant ?
    s="je vais travailler ce soir "
    print(s[3])
    print(s[3:7])
    print(len(s))
    
    for i in range (len(s)):
        print(s[i])
    
  2. Compléter le programme précédent de manière à ce qu'il compte le nombre de "a" dans la chaîne s précédente.
  3. Reprendre la question précédente pour compter et afficher le nombre de mots.
  4. Bien sûr, il est interessant de tester le programme avec divers textes dans la chaîne s.
Exercice 9:

Le programme suivant permet de décomposer les chiffres qui composent un nombre: le nombre n est converti en chaîne de caractères. Cette chaîne s peut alors être manipulée comme un tableau.
Qu'affiche le programme suivant ?
n=412
s=str(n)
print(s[2])

for i in s:
    print(i)

print(s[0]+s[1]+s[2])
print(int(s[0])+int(s[1])+int(s[2]))
  1. Écrire un programme qui, à un nombre donné (ou demandé à l'utilisateur), retourne la somme des chiffres qui le compose.
    Par exemple, pour n=412, le programme retourne 4+1+2=7.
  2. Écrire un programme qui, à un nombre donné (ou demandé à l'utilisateur), retourne la somme des carrés des chiffres qui le compose.
    Par exemple, pour n=412, le programme retourne 42+12+22=21.
  3. Un nombre heureux est un nombre entier qui, lorsqu'on ajoute les carrés de chacun de ses chiffres, puis les carrés des chiffres de ce résultat et ainsi de suite jusqu'à l'obtention d'un nombre à un seul chiffre égal à 1.
    Par exemple 7 et 13 sont heureux: 72=49, puis 42+92=97, puis 92+72=130, puis 12+32+02=10, puis 12+02=1

    De même pour 13: 12+32=10, puis 12+02=1.

    par contre 12 n'est pas heureux: 12+22=5 ≠ 1.

    Écrire un programme qui, à un nombre donné (ou demandé à l'utilisateur), retourne s'il est heureux ou non.
Exercice 10:
  1. Écrire un programme qui construit une liste de 5 nombres entiers aléatoires compris entre 1 et 6. (voir par exemple exercice 6)
  2. Compléter le programme précédent pour qu'il affiche de plus:
    • "paire": si 2 chiffres sont identiques
    • "brelan": si 3 chiffres sont identiques
    • "carré": si 4 chiffres sont identiques
    • "yams": si les 5 chiffres sont identiques
  3. Modifier le programme précédent pour compter, sur 1000 tirages de 5 chiffres, le nombre de paires, de brelans, de carrés et de yams obtenus.
Exercice 11:
n entiers, (2<n<100) de nombres entiers aléatoires compris entre 0 et 500.


Top Programmation en python

LongPage: h2: 1 - h3: 3