Listes

Tirer au hasard un prénom parmi 10

On souhaite tirer et classer au hasard les prénoms des élèves d'un groupe de l'ISN :

Aurélien, Axel, Guillaume, Louis, Miguel, Nathan, Olivier, Pierre, Quentin, Valentin.

  1. Ecrire un programme permettant d'afficher un prénom choisi au hasard parmi la liste ci-dessus
  2. On import le module random Voir comment importer un module, puis on définit la liste des prénoms :

    from random import *
    prenoms = ["Aurélien", "Axel", "Guillaume", "Louis", "Miguel", \
    "Nathan", "Olivier", "Pierre", "Quentin", "Valentin"]
    

    Réfléchissez à l'aide de l'indication ci-dessus avant de dévoiler la résolution proposée :

    Une résolution de l'exercice "Tirer au hasard un prénom parmi 10".

    # -*- coding: utf-8 -*-
    from random import *
    def ChoixPrenom(liste) :
        nump = randint(0, 9)
        print(" C’est à {} de commencer".format(liste[nump]))
    prenoms = ["Aurélien", "Axel", "Guillaume", "Louis", "Miguel", \
    "Nathan", "Olivier", "Pierre", "Quentin", "Valentin"]
    ChoixPrenom(prenoms)
  3. Modifier ce programme pour qu'il classe d’une façon aléatoire les 10 élèves du groupe ISN

Une résolution de l'exercice "Classer au hasard les élèves".

# -*- coding: utf-8 -*-
from random import *
from random import *
def ChoixPrenoms(liste) :
    k = 9
    while k >= 0 :
        num = randint(0, k)
        print(" C’est {} qui occupe la {} ième position ".format(liste[num],10-k))
        k -=1
        del prenoms[num]
prenoms = ["Aurélien", "Axel", "Guillaume", "Louis", "Miguel", \
"Nathan", "Olivier", "Pierre", "Quentin", "Valentin"]
ChoixPrenoms(prenoms)

Simulation de tirage de Loto

Ecrire un programme permettant de simuler le tirage de Loto

Une résolution de l'exercice "Simulation de tirage de Loto".

# -*- coding: utf-8 -*-
import random
def loto() :
    numero = []
    for i in range(1, 50) :
    	numero.append(i)
    for i in range(1, 6) :
    	b = random.choice(numero)
    	numero.remove(b)
    	print(" Numéro ", i, " : ", b)
    print(" N° de chance est : ", random.randint(1,10))
loto()

Le nombres de jours dans un mois

  1. Écrire une fonction, de paramètre le numéro du mois n de l'année, qui affiche le nombre de jours dans le mois numéro n de l'année

  2. Le nombre de jours dans un mois

    def NbeJoursMois(n) :
        """
        Fonction, de paramètre le numéro du mois n de l'année, qui
        renvoie le nombre de jours dans le mois n
        """
    	assert (n in [1,2,3,4,5,6,7,8,9,10,11,12])
        mois=["Janvier", "Février", "Mars", "Avril","Mai", "Juin", \
        "Juillet","Août","Septembre", "Octobre", "Novembre", "Décembre"]
        if n == 2 :
            print("le mois de {} contient 28 ou 29 jours en fonction de l'année.".format(mois[n-1]))
        else :
            nbj = int(30 + (n + n / 8) % 2)
            print("le mois de {} contient {} jours".format(mois[n-1],nbj))

  3. Modifier ce programme pour qu'il affiche exactement le nombre de jours au mois de février en distinguant les cas où l'année est bissextille ou pas

On rappelle que les années bissextiles sont les années divisibles par 4, à l'exception de celles qui sont divisibles par 100 sans l'être par 400.
Par exemple, 2000 est une année bissextile (2000 est divisible par 4. 2000 est divisible par 100 mais aussi par 400 : ne fait donc pas partie des exceptions).
2012 est divisible par 4 (et pas par 100) : 2012 est bissextile.
1900 est divisible par 4, par 100 mais pas par 400. 1900 n'est pas bissextile.

Le nombres de jours dans un mois

def NbeJoursMois(n,annee) :
    """
    Fonction, de paramètre le numéro du mois n de l'année annee, qui
    renvoie le nombre de jours dans le mois n
    """
    assert (n in [1,2,3,4,5,6,7,8,9,10,11,12])
    mois=["Janvier", "Février", "Mars", "Avril","Mai", "Juin", \
    "Juillet","Août","Septembre", "Octobre", "Novembre", "Décembre"]
    if n == 2 :
        if(annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0):
            nbj = 29
        else:
            nbj = 28
        print("En {} le mois de {} contient {} jours.".format(annee,mois[n-1],nbj))
    else :
        nbj = int(30 + (n + n / 8) % 2)
        print("En { } le mois de {} contient {} jours.".format(annee,mois[n-1],nbj))

Affichage du calendrier d'une année

Écrire une fonction, de paramètre annee, qui affiche le calendrier de l'année annee, en utilisant les listes et dictionnaires. Attention les années multiples de quatre sont bissextiles, sauf les années multiples de cent qui ne le sont pas, sauf les années multiples de quatre cents qui le sont, ainsi 2100, 2200, 2300, 2500, 2600, 2700, 2900 et 3000 ne sont pas bissextiles mais 2400 et 2800 le sont. Ajouter à ce calendrier le jour de la semaine pour obtenir l'affichage suivante :

Pour l'année 2018 :
lundi        1    Janvier      2018
mardi        2    Janvier      2018
mercredi     3    Janvier      2018
jeudi        4    Janvier      2018
vendredi     5    Janvier      2018
samedi       6    Janvier      2018
dimanche     7    Janvier      2018
...
...
...

Pour connaître le jour de la semaine du premier janvier de l'année à saisir On importe le module calendar Voir comment importer un module

puis on utilise la méthode voir ci-dessous :

import calendar
t = calendar.weekday(annee,1,1) 
# pour obtenir le numéro du jour de la semaine du premier janvier de l'année nommée annee (lundi correspond au numéro 0)

Réfléchissez à l'aide de l'indication ci-dessus avant de dévoiler la résolution proposée :

Une résolution de l'exercice "Affichage du calendrier d'une année".

# -*- coding: utf-8 -*-
import calendar
def calendrier(annee) :
    """ fonction, de paramètre annee, qui permet d'afficher le calendrier
    de l'année annee en utilisant les listes et dictionnaires
    """
    lemois = {0:"Janvier  ", 1:"Février  ", 2:"Mars     ",3: "Avril    ", 4:"Mai      ",
            5:"Juin     ", 6:"Juillet  ", 7:"Août     ", 8:"Septembre", 9:"Octobre  ",
            10:"Novembre ", 11:"Décembre "}
    joursMois = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    jourSemaine = ["lundi   ", "mardi   ", "mercredi", "jeudi   ","vendredi",
               "samedi  ", "dimanche"]

    if(annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0): # pour vérifier si l'année est bissextile ou pas
        joursMois[1]=29
    for j in range(0,12):
        if j == 0 :
            t = calendar.weekday(annee,1,1) # pour obtenir le jour de la semaine du premier janvier de l'année

        jour = 0
        while jour < joursMois[j] :
            if jour ≤ 8 :
                if joursMois[j] ≤ 8 :
                    print("  ", jourSemaine[(jour+t)%7],"   ",jour+1, "  ",lemois[j],"  ",annee)
                else :
                    print(" ", jourSemaine[(jour+t)%7],"   ",jour+1, "  ",lemois[j],"  ",annee)
            else :
                 print(" ", jourSemaine[(jour+t)%7],"  ",jour+1, "  ",lemois[j],"  ",annee)
            jour = jour + 1
        t = (jour+t)%7 # pour tenir compte du décalage des jours de la semaine d'un mois à l'autre
calendrier(2018)