Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement