J’ai fait le premier TP sous forme d’un script python complet avec des menus.
Télécharger le script ici.
"""
TP1 : Programme réalisé pour le Tp 1 d'informatique en MPSI, ce programme
calcule des sommes, moyennes et variances
"""
def main():
"""Fonction principale qui retourne toutes les opérations sur la liste"""
print(
"1) Somme\n2) Moyenne\n\
3) Variance 1\n4) Variance 2\n5) Collatz\n6) Nombres premiers\n\
7) N-ieme premier\n8) Recherche d'un élément dans une liste\n\
9) Maximum d'une liste\n10) Comptage des éléments d'une liste\n\
11) Comptage des éléments d'une liste v2 (entiers naturels)"
) # Récupère un liste de termes saisis par l'utilisateur
reponse = int(input(">>> "))
if reponse in (1, 2, 3, 4):
liste_texte = input(
"Donner une liste de nombres séparés par des espaces\n>>> "
)
liste = list(map(int, (x for x in liste_texte.split() if x.isdigit())))
if reponse == 1:
print("Somme :", somme(liste), "\n---")
main()
elif reponse == 2:
print("Moyenne :", moyenne(liste), "\n---")
main()
elif reponse == 3:
print("Variance 1 :", variance1(liste), "\n---")
main()
elif reponse == 4:
print("Variance 2 :", variance2(liste), "\n---")
main()
elif reponse == 5:
entier = int(input("Donner un nombre entier\n>>> "))
print("Collatz :", collatz(entier), "\n---")
main()
elif reponse == 6:
n_max = int(input("Liste des n premiers nombre premiers\n>>> "))
print(n_max, "premiers nombre premiers :", n_premiers(n_max), "\n---")
main()
elif reponse == 7:
n = int(
input("Couple constitué de n et du n-ième nombre premier\n>>> ")
)
retour = "(" + str(n) + ", " + str(n_premiers(n)[-1]) + ")" + "\n---"
print(retour)
main()
elif reponse == 8:
list_input = input("Liste séparé par des espace\n>>> ")
liste = list(map(str, (x for x in list_input.split())))
element = input("Chercher quoi dans la liste\n>>> ")
if recherche(liste, element):
print(
element,
"est dans la liste à la position",
recherche(liste, element),
"\n---",
)
elif not recherche(liste, element):
print(element, "n'est pas dans la liste\n---")
elif reponse == 9:
list_input = input("Liste séparé par des espace\n>>> ")
liste = list(map(int, (x for x in list_input.split())))
print(maximum(liste), "\n---")
main()
elif reponse == 10:
list_input = input("Liste séparé par des espace\n>>> ")
liste = list(map(str, (x for x in list_input.split())))
print(compte(liste), "\n---")
main()
# elif reponse == 11:
# list_input = input(
# "Liste séparé par des espace (entier naturels)\n>>> "
# )
# liste = list(map(int, (x for x in list_input.split())))
# print(compte2(liste), "\n---")
# main()
def somme(liste):
"""Retoune la somme des éléments de la liste"""
somme_liste = 0
for i in liste:
somme_liste += i
return somme_liste
def moyenne(liste):
"""Retoune la moyenne des éléments de la liste"""
moyenne_liste = somme(liste) / len(liste)
return moyenne_liste
def variance1(liste):
"""Retoune la variance des éléments de la liste"""
variance1_liste = somme(
[(x - moyenne(liste)) ** 2 for x in liste]) / len(liste)
return variance1_liste
def variance2(liste):
"""Retoune la variance des éléments de la liste avec une autre méthode"""
variance2_liste = (somme([x**2 for x in liste]) / len(liste)) + (
(somme(liste) ** 2) / len(liste)
)
return variance2_liste
def collatz(entier):
"""Fonction de collatz"""
if entier % 2 == 0:
image = entier / 2
else:
image = 3 * entier + 1
return image
def premier(n):
"""Dit si un nombre est premier"""
d = 0
for i in range(2, n):
if n % i == 0:
d += 1
if d < 1:
return n
return None
def n_premiers(n_max):
"""Retourne la liste des n premiers nombres premiers"""
liste_n_premiers = []
n = 2
while len(liste_n_premiers) < n_max:
if premier(n) is not None:
liste_n_premiers.append(premier(n))
n += 1
return liste_n_premiers
def recherche(liste, element):
"""
Renvoie true et la liste des indices correspondants si le nombre est
dans la liste sinon false
"""
trouve = []
for i in range(len(liste)):
if liste[i] == element:
trouve.append(i)
return trouve
def maximum(liste):
"""Renvoie le maximum d'une liste"""
if not liste:
return None
n_max = liste[0]
num_n_max = 0
for i in range(len(liste)):
if liste[i] > n_max:
n_max = liste[i]
num_n_max = i
return n_max, num_n_max
def compte(liste):
"""Renvoie le nombre de chaque éléments d'une liste"""
d = {}
for e in liste:
if e not in d:
d[e] = 1
else:
d[e] += 1
return d
# def compte2(liste):
# """je sais même pas"""
# T = [0] * (maximum(liste)[0] + 1)
# for k in liste:
# T[k] += 1
# return T
if __name__ == "__main__":
main()
Voir le PDF