Sagot :
Réponse :
Voir pièce jointe. C'est un programme python même si son extension est .txt (Nosdevoirs n'accpete pas le .py) Il faut donc changer son extension en .py pour le lancer.
Explications :
Tout d'abord, pour demander à l'utilisateur de saisir quelque chose, il faut utiliser la fonction "input" qui prend en paramètre une chaine de caractère représentant la question. Ici par exemple : input("saisissez le nombre de tirages :")
Mais la fonction input renvoie une chaine de caractère. Pour la transformer en nombre, on utilise la fonction int() qui converti son paramètre en nombre entier. On entoure donc l'input avec int:
int(input("saisissez le nombre de tirages :"))
On sauvegarde le résultat dans une variable nb_tirages:
nb_tirages = input("saisissez le nombre de tirages :")
Pour s'assurer que le nombre est compris entre 5 et 20 (inclus). On utilise le bloc conditionnel if qui si tirages est plus petit que 5 ou que tirages est plus grand que 20 affiche à l'utilisateur "nombre de tirages invalide" et quitte le programme :
if nb_tirages < 5 or nb_tirages > 20:
print("Le nombre de tirages saisi est invalide")
exit()
La fonction exit() permet de stopper le programme.
On crée la variable liste_tirages qui contiendra tous nos nombres aléatoires.
liste_tirages = []
Ensuite il faut faire une boucle qui se répettera jusqu'à ce qu'il y est le bon nombre d'élément dans la liste_tirages, la fonction len(liste) renvoie le nombre d'élément dans une liste. Pour crée une boucle conditionel on utilise while:
while len(liste_tirages) < nb_tirages:
La boucle se répetera jusqu'à ce que la longueur de la liste soit égale au nombre de tirages.
Pour générer un nombre aléatoire, il faut utiliser la fonction randint du module random. Il faut penser à l'importer et à ajouter cette ligne au début du programme :
from random import randint
puis il faut tirer un nombre aléatoire dans notre boucle:
while len(liste_tirages) < nb_tirages:
tirage = randint(1,50)
On teste vérifie s'il n'est pas déjà présent dans notre liste avec le mot clé in et on l'ajoute à notre liste avec la méthode append:
if not tirage in liste_tirages:
liste_tirages.append(tirage)
Il ne nous reste qu'à afficher cette liste avec print:
print(liste_tirages)
On l'ordonne avec la fonction sorted. Celle ci peut prendre un paramètre nommé, de syntaxe : fonction(parametre_classique, parametre_nommee=valeur). Avec le paramètre reverse à True, la fonction ordonne les éléments en sens inverse:
liste_tirages_ordonnee = sorted(liste_tirages, reverse=True)
Pour calculer les sommes, on utilisera des boucles de forme for i in range. La fonction range est souvent utilisé avec 2 arguments, la valeur minimale et maximale, mais peut également avoir un 3e argument, le pas, qui indique de combien la valeur i augment à chaque tour de boucle:
somme_pairs = 0
for i in range(0,len(liste_tirages_ordonne),2):
somme_pairs += liste_tirages_ordonne[i]
On parcourt les index pairs de 0 au dernier de la liste (len(liste_tirages_ordonne) renvoie la longueur de la liste qui est égale au dernier index + 1, mais cette valeur est exclue, donc la boucle parcours de 0 à l'index maximal).
On fait de même pour les index impairs en commençant les index à 1 :
somme_impairs = 0
for i in range(1,len(liste_tirages_ordonne),2):
somme_impairs += liste_tirages_ordonne[i]
Enfin on affiche:
print("somme paire = ", somme_pairs, " somme impraire = ", somme_impairs)
Voir programme complet en pièce jointe.