Algorithmes fondamentaux, traitements récurrents et chaînes de caractères
def somme_chiffres(x):
ch = str(x)
s = 0
for i in range(0, len(ch)):
s = s + int(ch[i])
return s
Cette fonction transforme un nombre entier en chaîne de caractères, puis calcule la somme de chacun de ses chiffres. Par exemple, pour l'entrée 123, la fonction retournera 1+2+3=6.
def somme_div(x):
s = 0
for i in range(1, x+1):
if x % i == 0:
s = s + i
return s
Cette fonction calcule la somme de tous les diviseurs d'un nombre donné. Par exemple, pour l'entrée 12, les diviseurs sont 1, 2, 3, 4, 6, et 12, donc la fonction retournera 1+2+3+4+6+12=28.
def fact(n):
f = 1
for i in range(2, n+1):
f = f * i
return f
La factorielle d'un nombre n (notée n!) est le produit de tous les entiers positifs inférieurs ou égaux à n. Par exemple, 5! = 5×4×3×2×1 = 120.
def puissance(x, n):
p = 1
for i in range(1, n+1):
p = p * x
return p
Cette fonction calcule x élevé à la puissance n, en multipliant x par lui-même n fois. Par exemple, puissance(2, 3) retourne 2^3 = 8.
def PGCD(a, b):
while (a != b):
if a > b:
a = a - b
else:
b = b - a
return a
L'algorithme d'Euclide pour calculer le Plus Grand Commun Diviseur. Il repose sur le principe que si a > b, alors PGCD(a, b) = PGCD(a-b, b).
def PPCM(a, b):
if a > b:
max = a
min = b
else:
max = b
min = a
while max % min != 0:
max = max + (a + b - min)
return max
Le Plus Petit Commun Multiple de deux nombres est le plus petit entier positif qui est divisible par les deux nombres.
def verif_maj(ch):
ok = True
i = 0
while i < len(ch) and ok:
if ch[i] < "A" or ch[i] > "Z":
ok = False
i = i + 1
return ok
Cette fonction vérifie si tous les caractères d'une chaîne sont des lettres majuscules. Elle retourne True si c'est le cas, False sinon.
def verif_lettres(ch):
i = 0
while i < len(ch) and ch[i] in ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]:
i = i + 1
return i == len(ch)
Cette fonction vérifie si tous les caractères d'une chaîne sont des lettres. Elle retourne True si c'est le cas, False sinon.
def verif_caracteres(ch):
i = 0
while i < len(ch) and ch.find(ch[i]) == i:
i = i + 1
return i == len(ch)
Cette fonction vérifie si tous les caractères d'une chaîne sont distincts (c'est-à-dire qu'il n'y a pas de caractère répété). Elle retourne True si c'est le cas, False sinon.
def nb_voyelles(ch):
nb = 0
for i in range(0, len(ch)):
if ch[i] in ["a", "e", "i", "o", "u", "y"]:
nb = nb + 1
return nb
Cette fonction compte le nombre de voyelles présentes dans une chaîne. Elle considère "a", "e", "i", "o", "u" et "y" comme des voyelles.
Écrivez un programme qui demande à l'utilisateur de saisir un nombre entier et qui affiche la somme de ses chiffres.
def somme_chiffres(x):
ch = str(x)
s = 0
for i in range(len(ch)):
s += int(ch[i])
return s
# Programme principal
nombre = int(input("Entrez un nombre entier: "))
resultat = somme_chiffres(nombre)
print(f"La somme des chiffres de {nombre} est {resultat}")
Écrivez une fonction qui vérifie si une chaîne de caractères est un palindrome (se lit de la même façon de gauche à droite et de droite à gauche).
def est_palindrome(ch):
ch = ch.lower() # Convertir en minuscules
i = 0
j = len(ch) - 1
while i < j:
if ch[i] != ch[j]:
return False
i += 1
j -= 1
return True
# Programme principal
texte = input("Entrez une chaîne de caractères: ")
if est_palindrome(texte):
print(f"'{texte}' est un palindrome")
else:
print(f"'{texte}' n'est pas un palindrome")
Écrivez un programme qui calcule et affiche le PGCD et le PPCM de deux nombres entiers saisis par l'utilisateur.
def pgcd(a, b):
while a != b:
if a > b:
a = a - b
else:
b = b - a
return a
def ppcm(a, b):
return (a * b) // pgcd(a, b) # Formule: PPCM(a, b) = (a * b) / PGCD(a, b)
# Programme principal
a = int(input("Entrez le premier nombre: "))
b = int(input("Entrez le deuxième nombre: "))
resultat_pgcd = pgcd(a, b)
resultat_ppcm = ppcm(a, b)
print(f"Le PGCD de {a} et {b} est {resultat_pgcd}")
print(f"Le PPCM de {a} et {b} est {resultat_ppcm}")