from math import * # Fonctions def capteur (): print('\n> Infos sur le capteur\n') marque = input('Marque : ') modele = input('Modèle : ') while True: try: f = float(input('Focale réelle de la lentille (en mm) : ')) break except ValueError: print('Erreur, la valeur saisie doit-être un réel...') i = 0 while i == 0: choix = input('\nConnaissez-vous les dimensions réelles du capteur (O/N) ? ') choix = choix[0:1].lower() if choix == 'o': while True: try: longueur = float(input('Entrez sa longueur (en mm) : ')) break except ValueError: print('Erreur, la valeur saisie doit-être un réel...') while True: try: largeur = float(input('Entrez sa largeur (en mm) : ')) break except ValueError: print('Erreur, la valeur saisie doit-être un réel...') i += 1 elif choix == 'n': while True: try: x = int(input('Entrez la taille d''image X (en px) : ')) break except ValueError: print('Erreur, la valeur saisie doit-être un entier...') while True: try: y = int(input('Entrez la taille d''image Y (en px) : ')) break except ValueError: print('Erreur, la valeur saisie doit-être un entier...') while True: try: pixel = float(input('Entrez la taille de pixel (en micromètres) : ')) break except ValueError: print('Erreur, la valeur saisie doit-être un réel...') longueur = x * (pixel / 1000) largeur = y * (pixel / 1000) i += 1 else: print('Erreur, choix non disponible...') return marque, modele, f, longueur, largeur # Code ## Variables initiales i1 = True while i1 == True: c_marque,c_modele,c_focale,c_long,c_larg = capteur() print('\nLe capteur saisi est un {} {} avec une focale de {} mm et une taille de {} mm par {} mm.'.format(c_marque,c_modele,c_focale,c_long,c_larg)) i2 = True while i2 == True: rep = (input ('\nEst-ce correct (O/N) ? ')) rep = rep[0:1].lower() if rep == 'o': i1 = False i2 = False elif rep == 'n': i2 = False else: print('Erreur, choix non disponible...') champ = 2 * atan(sqrt(pow(c_long,2)+pow(c_larg,2))/(2 * c_focale)) focale_35mm = (sqrt(pow(24,2)+pow(36,2))) / (2*tan(champ/2)) print('\nFocale équivalente 35 mm : {} mm' '\nAngle de champ : {}°'.format(focale_35mm,degrees(champ)))