# Copyright (c) 2024. # Luc Bergevin, tous droits réservés. # Créé le 2024-11-25 10 h 50 import math import sys from timeit import default_timer as timer from exercice.mesFonctions import absolu, \ combinaison, \ minimum, \ plafondQuotient, \ sinus currentArgvIndex = 0 ''' Numéro 1 ''' print("Numéro 1 :") def helloWorld(): print("Début de la fonction 'helloWorld()'") print("Hello World!!!") print("Fin de la fonction 'helloWorld()'") print("Appel de la fonction 'helloWorld()'") helloWorld() print("Sortie de la fonction 'helloWorld()'") ''' Numéro 2 ''' print("\n\nNuméro 2 : ") print("Éléments dont le nom commence par une lettre entre 'A' et 'F'") def startsFromAtoF(word): if ord(word[0]) in range(ord('A'), ord('G')): return True else: return False def printCar(car): print(car) cars = ["Audi", "Lada", "Toyota", "BMW", "Honda", "Chevrolet", "Ferrari", "Ford", "Porsche", "Hyundai"] for car in cars: if startsFromAtoF(car): printCar(car) ''' Numéro 3 ''' print("\n\nNuméro 3 :") def volume(diameter): return 4 / 3 * math.pi * (diameter / 2) ** 3 planets = ["Mercure", "Vénus", "Terre", "Mars", "Jupiter", "Saturne", "Uranus", "Neptune"] diameters = [4879, 12104, 12742, 6779, 139820, 116460, 50724, 49244] for index in range(len(planets)): print(f'{planets[index]:>12}', "-->", f'{volume(diameters[index]):>23_.1f}') ''' Numéro 4 ''' def square(threshold): # initialisation des variables number = 0 square = [0] # insertion de la nouvelle valeur au début pour plus de simplicité while square[0] < threshold: number += 1 square.insert(0, number ** 2) # boucle finie mais les données sont en ordre inverse square.reverse() return square def cube(threshold): # initialisation des variables number = 0 cube = [0] # insertion de la nouvelle valeur au début pour plus de simplicité while cube[0] < threshold: number += 1 cube.insert(0, number ** 3) # boucle finie mais les données sont en ordre inverse cube.reverse() return cube print("\n\nNuméro 4 :") currentArgvIndex += 1 threshold = int(sys.argv[currentArgvIndex]) print("Liste des N premiers carrés parfaits :") result = square(threshold) for index in range(len(result)): print(f"{index:>12} --> {result[index]:15_}") print("\nListe des N premiers cubes parfaits :") result = cube(threshold) for index in range(len(result)): print(f"{index:>12} --> {result[index]:15_}") ''' Numéro 5 ''' print("\n\nNuméro 5 :") print("Le minimum de [8, 7, 6, 5] est :", f"{minimum([8, 7, 6, 5])}") print("La valeur absolue de -12 est :", f"{absolu(-12)}") print("Le sinus de pi est :", f"{sinus(math.pi)}") print("La valeur plafond de 37 / 7 est :", f"{plafondQuotient(37, 7)}") print("Le nombre de combinaisons possibles au 6/49 est :", f"{combinaison(49, 6):,}") ''' Numéro 6 ''' print("\n\nNuméro 6 :") print( "Liste des N premiers factoriels jusqu'à ce que le résultat du factoriel", "soit plus qu'un certain seuil :") # fonction qui effectue le calcul d'un factoriel de façon récursive def recurseFacto(number): if number > 1: return number * recurseFacto(number - 1) else: return 1 # fonction qui imprime le résultat d'un calcul factoriel reçu sous forme de tableau def printFacto(table=[]): for index in range(len(table)): print(f"{index:5} --> {table[index]:15,}") # code principal currentArgvIndex += 1 threshold = int(sys.argv[currentArgvIndex]) # initialisation des variables number = 0 result = [1] # insertion de la nouvelle valeur au début du tableau pour plus de simplicité while threshold > result[0]: number += 1 result.insert(0, recurseFacto(number)) # boucle finie mais les données sont en ordre inverse result.reverse() printFacto(result) ''' Numéro 7 ''' print("\n\nNuméro 7 :") print("Suite de Fibonacci") # calcul du nombre de Fibonacci par une boucle for def forFibonacci(number): if number in [1, 2]: return 1 else: fibo = [1, 1] for index in range(2, number): fibo.append(fibo[index - 1] + fibo[index - 2]) return fibo[len(fibo) - 1] # calcul du nombre de Fibonacci par une récursion def recurseFibonacci(n): if n in [1, 2]: return 1 else: return recurseFibonacci(n - 1) + recurseFibonacci(n - 2) # code principal number = int(input("Quel est le nombre de Fibonacci voulu? :")) start = timer() print(f"\nPar récursivité : Fibonacci({number}) = {recurseFibonacci(number):,}") end = timer() elapse = end - start print("Temps utilisé par récursivité :", f"{elapse:>12,.7f}") start = timer() print(f"\nPar une boucle : Fibonacci({number}) = {forFibonacci(number):,}") end = timer() elapse = end - start print("Temps utilisé par une boucle :", f"{elapse:>13.7f}")