Exercices de python

Aulys, 1G1 - 03/2022

Présentation :

# Ici un commentaire en Python précédé d'un hashtag. 
largeur = int(input("Entrez largeur : "))
longueur = int(input("Entrez longueur : "))

surf = largeur * longueur
peri = 2 * largeur + 2 * longueur

print("La surface =", surf)
print("Le périmètre =", peri)

if peri < surf : 
    print("Le périmètre est inférieur à la surface")

else : 
    print("le périmètre est inférieur à la surface")

Exercice 2 :

# Demande des valeurs
a = float(input("Entrez a : "))
b = float(input("Entrez b : "))
c = float(input("Entrez c : "))
d = float(input("Entrez d : "))

x = (d - b) / (a - c)

y = a * x + b
print("x =", x)
print("y =", y)

Exercice 3

a = 5
b = 10

print("Au début : a =", a, "et b =", b, ".")

tmp = a # tmp = 5
a = b # a = 10 & b = 10
b = tmp # b = tmp = 5

print("A à fin : a =", a, "et b =", b, ".") # a = 10 et b = 5

Exercice 4 :

n = int(input("Entrez un nombre entier n : "))

S = 1

for i in range (n) :
    S = S * 2

print("S =", S)

Exercice 5 :

n = int(input("Entrer un nombre n (10 et 100) : "))

l = 1
p = 1

for i in range (n) :
    l = l + 1
    p = p*l

print("S =", p )

Exercice 6 :

n = int(input("Entrez un nombre entier n : "))

S = 0
l = 0

for i in range (n) : 
    l = l + 1
    S = S + l

print("S =", S)

S2 = int(n * (n + 1) / 2)

print("S =", S2)

# Les deux résultats sont égaux (S = S2)

Exercice 7 :

s = float(input("Entrez une somme initiale en € : s = "))
u = s # La variable u sauvegarde la somme initiale
t = float(input("Entrez un taux d'intérêt en % : t = "))
n = int(input("Entrez un nombre entier d'années :  "))

for i in range (n) :
    s = s + (s * (t/100))
    print("Intérêts percus de l'année", i, " :", s - u, "€ ")

print("Au bout de", n, "années, le montant total sur le livret est de :", s, ".")

Exercice 8 :

Version "double"

n = int(input("Entrez un nombre entier : "))
for i in range(1, n + 1):
    if n % i == 0:
            print(i)
print(n)

Version "éco"

n = int(input("Entrez un nombre entier : "))
for i in range(1, n//2 + 1):
    if n % i == 0:
            print(i)
print(n)

Exercice 9 :

n = int(input('Entrez un nombre entier : '))

i = 2

while i < n and n % i != 0 :
    i = i + 1

if i == n :
    prem = True
else :
    prem = False

if prem :
    print('Le nombre', n, 'est premier.')
else :
    print('Ce n\'est pas un nombre premier.')

Exercice 10 :

ax = int(input("Enrez les coordonnées x du point a : "))
ay = int(input("Enrez les coordonnées y du point a : "))

bx = int(input("Enrez les coordonnées x du point b : "))
by = int(input("Enrez les coordonnées y du point b : "))

cx = int(input("Enrez les coordonnées x du point c : "))
cy = int(input("Enrez les coordonnées y du point c : "))

xab = bx-ax
yab = by-ay
xac = cx-ax
yac = cy-ay

if (xab * xac - xac * yab == 0) :
    print("Les points sont alignés.")

else :
    print("Les points ne sont pas alignés.")

Exercice 11 :

n1 = float(input("Entrez un premier nombre : "))
n2 = float(input("Entrez un deuxième nombre : "))

dis = abs(n1 - n2)

print("La distance entre les deux nombres est de :", dis)

Exercice 12 :

from math import *

a = float(input("Entrez a : "))
b = float(input("Entrez b : "))
c = float(input("Entrez c : "))

delta = b**2 - 4*a*c

if delta < 0 :
    print("Pas de solution")

else :
    x1 = (-b-sqrt(delta))/2*a
    x2 = (b-sqrt(delta))/2*a
    print("x1 =", x1)
    print("x2 =", x2)

Exercice 13 :

import sys # Importation de la bibliothèque pour terminer le programme en cas de a nul.
from math import *

a = float(input("Entrez a : "))

if a == 0:
    print("Ce n'est pas une équation du second degré")
    sys.exit()

b = float(input("Entrez b : "))
c = float(input("Entrez c : "))

delta = b**2 - 4*a*c

if delta < 0 :
    print("Pas de solution")

else :
    x1 = (-b-sqrt(delta))/2*a
    x2 = (b-sqrt(delta))/2*a
    print("x1 =", x1)
    print("x2 =", x2)

Exercice 14 :

from math import *

a = float(input("Entrez a : "))
b = float(input("Entrez b : "))
c = float(input("Entrez c : "))

if a == 0 :
    print("Ceci n'est pas une equation du second degré")
    x = -c/b
    print("La solution est", x)

else : 
    delta = b**2 - 4*a*c

    if delta < 0 :
        print("Pas de solution")

    else :
        x1 = (-b-sqrt(delta))/2*a
        x2 = (b-sqrt(delta))/2*a
        print("x1 =", x1)
        print("x2 =", x2)

Exercice 15 :

from math import *

a = float(input("Entrez a : "))
b = float(input("Entrez b : "))
c = float(input("Entrez c : "))

if a == 0:
    print("Ceci n'est pas une equation du second degré")
    sol = -c / b
    print("La solution est", sol)

else:
    delta = b**2 - 4 * a * c

    if delta < 0:
        print("Pas de solution")

    else:
        x1 = (-b - sqrt(delta)) / 2 * a
        x2 = (b - sqrt(delta)) / 2 * a
        print("x1 =", x1)
        print("x2 =", x2)

x = int(
    input("Borne début : ")
)  # On appelle x la borne de début pour faciliter le calcul plus bas.
fin = int(input("Borne fin : "))
pas = float(input("Entrez le pas : "))

for t in range(fin - x):
    print("x =", x, "y=", a * x**2 + b * x + c)
    x = x + pas

Exercice 16 :

n = int(input("Entrez un nombre entier : "))

while n != 1:
    if n%2 == 0:
        n = n/2
        print(n)
    else :
        n = (n*3)+1
        print(n)

Exercice 17 :

n = int(input("Entrez un nombre entier : "))

p = 0  # Compteur d'étapes.
m = 0  # Variable qui augmente pour chaque nombre supérieur au précédent.

while n != 1:

    if n % 2 == 0:
        if n > m:  # Boucle permettant d'augmenter m à chaque nombre supérieur rencontré
            m = n
        n = n / 2
        p = p + 1
        print(n)

    else:
        if n > m:
            m = n
        n = (n * 3) + 1
        p = p + 1
        print(n)

print("Nombres d'étapes :", p)
print("Le plus grand nombre rencontré est :", m)

Exercice 18 :

Version 1 :

n = 0

fib = [0, 1]

while max(fib) <= 500:
    fib.append(fib[n - 1] + fib[n - 2])

del fib[-1]

print(fib)

Version 2 :

n = 0
deb = int(input("Entrez une borne de début : "))  # 500 dans l'énoncé
fin = int(input("Entrez une borne de fin : "))  # 1000 dans l'énoncé

fib = [0, 1]  # Deux premiers termes de la liste

while max(fib) <= fin:
    fib.append(fib[n - 1] + fib[n - 2])

del fib[
    -1
]  # Supression du dernier élément de la liste qui est en trop (dépasse la borne fin)

x = [
    i for i in fib if i > deb
]  # Création d'une nouvelle liste qui ne prend que les nombres supérieurs à 500 (de la 1ère liste)

print(x)  # Affichage des valeurs de la liste qui vient d'être créer

Exercice 19 :

Version 1 :

n = int(input("Entrez un nombre entier à convertir en binaire : "))
d = n
res = []

while n != 0 :
    q = n // 2
    r = n % 2
    res.append(str(r))
    n = q

x = res[::-1]
x = ''.join(x)

print("le nombre décimal", d, "est égal à", x, "en binaire.")

Version 1 (avec fonction) :

def dec_to_bin(d):

    if d//2 in [0,1]: return str(d//2) + str(d%2)
    else: return dec_to_bin(d//2) + str(d%2)

a = int(input("Entrez d : "))
print(dec_to_bin(a))

Version 1 (récursive) :

def b(d):
    return (
        b(d // 2) * 10 + d % 2 if d else 0
    )  # La fonction s'appelle elle-même. Si la condition a lieu, affiche 1, sinon 0.


a = int(input("Entrez un nombre à convertir en binaire : "))
print(f"Le nombre décimal {a} est égal à {b(a)} en binaire.")

Version 1 (opérateurs binaires) :

def b(d):
  if d == 0: return '0'

  r = [0]*d.bit_length()
  i = 0
  while d:
      r[-i] = d & 1
      d >>= 1
      i += 1
  return ''.join(r)

a = int(input("Entrez un nombre à convertir en binaire : "))
print(f"Le nombre décimal {a} est égal à {b(a)} en binaire.")

Version 2 :

n = int(input("Entrez un nombre entier à convertir en binaire : "))
d = n
res = []  # Liste vide

while n != 0:
    q = n // 2
    r = n % 2
    res.append(str(r))  # Ajout de la valeur du reste à la liste
    n = q

bit = 8 - len(res)
for i in range(bit):
    res.append(str(0))

res = res[
    ::-1
]  # Inversion des termes de la suite (bit de poids fort et bit de poids faible)
res = "".join(
    res
)  # "Colle" les termes de la suite, au lieu d'obtenir un truc comme "[1, 0, 0, 1, 0]"

print("le nombre décimal", d, "est égal à", res, "en binaire.")

Version 3 :

n = int(input("Entrez un nombre entier à convertir en binaire : "))
d = n
res = []
k = 0

while n != 0:

    q = n // 2
    r = n % 2
    res.append(str(r))
    n = q

if d < 10:  # Bug pour les nombres à un chiffre, donc condition avec if

    bit = 8 - (len(res))
    for i in range(bit):
        res.append(str(0))

else:

    for k in range(1, (len(str(d)))):  # Vérifie chaque octet entre 1 et len(d)

        if d / 256 <= k and d / 256 > k - 1:  # Si division par 256 <= nombre étudié
            bit = k * 8 - (len(res))  # Calcule le nombre de 0 qu'il faut ajouter

            for i in range(bit):
                res.append(str(0))

print("Nombre d'octets :", k)


res = res[::-1]
res = "".join(res)

print(f"Le nombre décimal {d} est égal à {res} en binaire.")