SHARE
TWEET

Untitled

a guest Oct 23rd, 2019 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. # Mariette, Virey
  3. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4.  
  5. """Devoir en temps libre n°2."""
  6.  
  7.  
  8. ## Exercice 1
  9.  
  10. def nombre_impairs_divisibles_par_7(n):
  11.     """Compte le nombre d'entiers impairs divisibles par 7 et compris entre 1 et n"""
  12.     compteur = 0 #variable compteur initialisé à 0
  13.     for nombre in range(1, n + 1):
  14.         if nombre % 7 == 0 and nombre % 2 == 1:
  15.             compteur += 1
  16.     return compteur
  17.  
  18.  
  19. def somme_impairs_divisibles_par_7(n):
  20.     """Somme les entiers impairs divisibles par 7 et compris entre 1 et n"""
  21.     somme = 0 #variable compteur initialisé à 0
  22.     for nombre in range(1, n + 1):
  23.         if nombre % 7 == 0 and nombre % 2 == 1:
  24.             somme += nombre
  25.     return somme
  26.  
  27.  
  28. ## Exercice 2
  29.  
  30. def tous_positifs(liste):
  31.     """Vérifie si une liste de nombre est composée de nombres strictements positifs ou nuls"""
  32.     for nombre in liste:
  33.         if nombre < 0:
  34.             return False
  35.     return True
  36.  
  37.  
  38. ## Exercice 3
  39.  
  40. def probleme_48(n):
  41.     """Renvoie le nombre composé des 10 derniers chiffres du résultat de la somme 1**1 + 2**2 + ... + n**n"""
  42.     somme = 0
  43.     for m in range(1, n + 1):
  44.         somme += m ** m
  45.     return int(((somme/10000000000) - int(somme / 10000000000)) * 10000000000)
  46.  
  47. ## Exercice 4
  48.  
  49. def separe_petits_grands(liste, seuil):
  50.     """Sépare en deux listes distinctes "petits" et "grands" issues du tri d'une seule liste en fonction d'une valeur seuil"""
  51.     petits = []
  52.     grands = []
  53.     for i in range(len(liste)):
  54.         if liste[i] > seuil:
  55.             grands += [liste[i]]
  56.         else:
  57.             petits += [liste[i]]
  58.     return (petits, grands)
  59.  
  60.  
  61. ## Exercice 5
  62.  
  63. import math
  64.  
  65. def prix_total(prix_au_kg, masses_voulues):
  66.     """Donne le total en euro arrondi à l'euro supérieur nécessaire à l'achat des ingrédients en fonction de la quantité nécessaire et du prix au kg"""
  67.     prix = 0
  68.     for num_ingredient in range(len(prix_au_kg)):
  69.         prix += prix_au_kg[num_ingredient] * masses_voulues[num_ingredient]
  70.     return math.ceil(prix)
  71.  
  72.  
  73. ## Exercice 6
  74.  
  75. def calcul_somme_ligne(liste_): #on crée une fonction qui calcule la somme d'une seule ligne
  76. #TODO : intégrer cette fonction dans une boucle for qui va de la premiere à la derniere ligne et compare les résultats de cette fonction
  77.     """Calcule la somme des éléments d'une ligne"""
  78.     somme = 0
  79.     for colonnes in range(len(liste_)):
  80.         somme += liste_[colonnes]
  81.     return somme
  82.  
  83. def calcul_somme_colonne(num_colonne, grille):
  84.     """Calcule la somme des éléments d'une colonne"""
  85.     somme = 0
  86.     for lignes in range(len(grille)):
  87.         somme += grille[lignes][num_colonne]
  88.     return somme
  89.  
  90. def calcul_somme_diago(grille):
  91.     """Calcule la somme des éléments de la diagonale G/D"""
  92.     somme1 = 0
  93.     somme2 = 0
  94.     indice_down = len(grille)
  95.     for indice in range(len(grille)):
  96.         indice_down -= 1
  97.         somme1 += grille[indice][indice]
  98.         somme2 += grille[indice][indice_down]
  99.     if somme1 != somme2:
  100.         return False
  101.     return somme1
  102.  
  103. def est_carre_magique(grille):
  104.     """Verifie si la grille fournie est un carré magique"""
  105.     #Première étape: Vérification des entiers (appartenance à [1; n**2]
  106.     for lignes in range(len(grille)):
  107.         for colonnes in range(len(grille[lignes])):
  108.             if grille[lignes][colonnes] > len(grille) ** 2 or grille[lignes][colonnes] < 1:
  109.                 return False
  110.  
  111.     #Deuxième étape: Vérification des sommes des lignes
  112.     for ligne in range(len(grille) - 1):
  113.         if calcul_somme_ligne(grille[ligne]) != calcul_somme_ligne(grille[ligne + 1]):
  114.             return False
  115.     somme_ligne = calcul_somme_ligne(grille[0])
  116.  
  117.     #Deuxième étape: Vérification des sommes des colonnes
  118.     for colonne in range(len(grille) - 1):
  119.         if calcul_somme_colonne(colonne, grille) != calcul_somme_colonne(colonne + 1, grille):
  120.             return False
  121.  
  122.     somme_colonne = calcul_somme_colonne(0, grille)
  123.  
  124.     #Troisième étape: Vérification des sommes des diagonales
  125.     if calcul_somme_diago(grille) == False:
  126.         return False
  127.     somme_diago = calcul_somme_diago(grille)
  128.  
  129.     #Quatrième étape: Vérification de la cohérence des sommes entre lignes, colonnes et diagos
  130.  
  131.     if somme_ligne != somme_colonne or somme_ligne != somme_diago or somme_colonne != somme_diago:
  132.         return False
  133.  
  134.     return True #si toutes les conditions sont vérifiées la fonction renvoie True
  135.  
  136.  
  137. ## Exercice 7
  138.  
  139. def detection_tricheur(numeros):
  140.     """À compléter."""
  141.     raise NotImplementedError(numeros)
  142.  
  143.  
  144. ## Exercice 8
  145.  
  146. def liberation_prisonniers(n):
  147.     """À compléter."""
  148.     raise NotImplementedError(n)
  149.  
  150.  
  151. ## Exercice 9
  152.  
  153. def look_and_say(terme):
  154.     """À compléter."""
  155.     raise NotImplementedError(terme)
  156.  
  157.  
  158. def suite_de_conway(n):
  159.     """À compléter."""
  160.     # La variable "_" est une convention pour dire que l'on n'aura pas besoin
  161.     # de ce résultat et permet de ne pas générer d'avertissement
  162.     for _ in range(n):
  163.         pass
  164.     raise NotImplementedError(n)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top