Connexion élèves

Choisir le(s) module(s) à installer :

Python - correction exercices Conditions

La plus petite des deux

Proposition de script

			
def plus_petite(n1, n2):
	if n1 < n2:
		pp = n1  # on utilise une variable 'pp' qui contiendra le résultat à renvoyer
	elif n2 < n1:
		pp = n2
	else:
		pp = n1, n2 # si les deux valeurs sont identiques, on les renvoie toutes les deux !
	return pp
	
print("La valeur la plus petite est", plus_petite(15, 23))
			
		

Il est à noter que l'on peut très bien se passer de la variable pp, et utiliser à la place directement plusieurs instructions return à différents endroits de la fonction :

			
def plus_petite(n1, n2):
	if n1 < n2:
		return n1
	elif n2 < n1:
		return n2
	else:
		return n1, n2
	
print("La valeur la plus petite est", plus_petite(15, 23))
			
		

Remarques

Il y a bien 3 cas à évaluer ici : pensez au cas où les deux valeurs sont égales !

La plus longue chaîne

Proposition de script

Avec la même "astuce" que ci-dessus :

				
def plus_longue(chaine1, chaine2):
	l1 = len(chaine1) 	# on détermine tout d'abord le nombre de caractères de chacune des chaînes
	l2 = len(chaine2)
	
	if l1 < l2: 		# on fait ensuite les tests sur leur longueur
		return "La plus longue chaîne est " + chaine2 + " avec " + l1 + " caractères."
	elif l2 < l1:
		return "La plus longue chaîne est " + chaine1 + avec " + l2 + " caractères."
	else:
		return "Les deux chaînes sont de même longueur : " + l1 + " caractères."
	
print(plus_longue("ababab", "bababababab"))
				
			

Remarques

Ici, on construit directement une chaîne à renvoyer, formée de la concaténation de deux autres chaînes; il n'y a alors qu'à afficher directement le résultat renvoyé par la fonction.

IMC

Proposition de script

				
def calcul_imc(taille, poids):
	imc = poids / (taille**2) # calcul de la valeur de l'imc

	if (imc < 18.5):
		return imc, "poids insuffisant."
	elif (imc >= 18.5 and imc < 25):
		return imc, "poids normal."
	elif ( imc >= 25 and imc < 30):
		return imc, "surpoids."
	else :
		return imc, "obésité."			
				
t = float(input("Entrez votre taille en m : "))
p = int(input("Entrez votre poids en kg: "))

res1, res2 = calcul_imc(t, p) # appel de la fonction, et stockage de ses résultats renvoyés dans deux variables : imc -> res1, chaine -> res2

print("Votre IMC est", res1)
print("Vous êtes en", res2)
				
			

Remarques :

Combien de caractères...

Proposition de script

			
def compte_caractere(txt, car):
	compteur = 0 					# variable auxiliaire servant de compteur de caractères

	for lettre in txt :				# pour chaque lettre du texte :
		if lettre == car :			# si la lettre courante est identique au caractère recherché,
			compteur = compteur + 1 # alors on incrémente le compteur

	return compteur


long_texte = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatu"
caractere = 'e'

res = compte_caractere(long_texte, caractere) # appel de la fonction, et stockage de son résultat renvoyé

print("Le caractère", caractere, "se trouve", res, "fois dans le texte.")
							
		

Remarques

Année bissextile

Proposition de script

				
def est_bissextiel(annee):

	if ( annee % 4 == 0 and annee % 100 !=0 or annee % 400 == 0 ) :
		return True
	else :
		return False

print(est_bissextile(2022)) 
				
			

Remarques

Comme l'a dit le grand théoricien de l'algorithmique Donald Knuth :

"Premature optimization is the root of all evil (or at least most of it) in programming." ( L'optimisation prématurée est la racine de tous les maux (ou, du moins, la plupart d'entre eux) en programmation. )

Suivez ce conseil, et écrivez d'abord votre code en réfléchissant à la logique de ce que vous voulez faire, même si cela ne vous paraît pas très "élégant". Ensuite, éventuellement, et seulement si vous maîtrisez cela, vous pourrez réfléchir à l'optimisation de votre code afin d'améliorer sa clarté.

Quel jour était-il le... ?

Comme indiqué dans la consigne, on va donc réutiliser la fonction précédente en l'appelant à l'étape concernée de l'algorithme :

Proposition de script

				
def est_bissextile(annee):
	# code repris de l'exercice précédent
	return ( annee % 4 == 0 and annee % 100 !=0 or annee % 400 == 0 ) 


def jour_date(siecle, an, jour, mois, annee):	
	
	#application de la formule de l'étape 3 au calcul de la variable 'valeur'
	valeur = an + an // 4

	# appel de la fonction est_bissextile, et stockage de son résultat dans une variable 'bissext'
	bissext = est_bissextile(annee)

	# test sur le siècle
	if siecle == 18 :
    	valeur = valeur + 2
	elif siecle == 20 :
    	valeur = valeur + 6

	#tests sur le mois
	if (mois == 1) and (bissext == False ) : # mois = janvier et année pas bissextile ?
    	valeur = valeur + 1

	if (mois == 2): # mois = février ?
    	if bissext == True: # Deuxième test imbriqué dans le précédent
        	valeur = valeur + 3
    	else :# sous-entendu : si bissext == Faux...
        	valeur = valeur + 4

	if (mois == 3) or (mois == 11) :
		valeur = valeur + 4
	if mois == 5 :
		valeur = valeur + 2
	if mois == 6 :
		valeur = valeur + 5
	if mois == 8 :
		valeur = valeur + 3
	if mois == 10 :
		valeur = valeur + 1
	if (mois == 9) or (mois == 12 ):
		valeur = valeur + 6

	valeur = ( valeur + jour ) % 7

	#détermination du jour en fonction de la valeur de la variable 'valeur'
	if valeur == 1 :
		jr ='dimanche'
	if valeur == 2 :
		jr ='lundi'
	if valeur == 3 :
		jr ='mardi'
	if valeur == 4 :
		jr ='mercredi'
	if valeur == 5 :
		jr ='jeudi'
	if valeur == 6 :
		jr ='vendredi'
	if valeur == 0 :
		jr ='samedi'

	# renvoi du résultat
	return jr

print(jour_date(20, 22, 1, 10, 2022)) # appel de la fonction pour la date du 01/10/2022 
				
			

Remarques