Les boucles et conditions

Parité des longueurs.

Écrire un programme qui :

  1. demande à l'utilisateur d'entrer une chaîne de caractères,
  2. affiche le message "La chaîne comporte un nombre pair de caractères." ou le message "La chaîne comporte un nombre impair de caractères." suivant les cas.

Résolution de l'exercice "parité des longueurs".


ch=input("Entrez une chaîne de caractères : ")

if len(ch)%2==0 : 
	print("Votre chaîne compte un nombre pair de caractères.")
else :
	print("Votre chaîne compte un nombre impair de caractères.")

Nombre de 'a'.

Écrire un programme qui :

  1. demande à l'utilisateur d'entrer une phrase,
  2. puis affiche le nombre de lettres a contenues dans la phrase.

Résolution de l'exercice "Nombre de a".


ch=input("Entrez une phrase : ")

compteur_a=0
for x in ch :
	if x=='a':
		compteur_a+=1
		
print("La phrase compte {} lettres a.".format(compteur_a))

Nombre de voyelles.

Écrire un programme qui :

  1. demande à l'utilisateur d'entrer une phrase,
  2. puis affiche le nombre de voyelles contenues dans la phrase.

Résolution de l'exercice "nombre de voyelles".


ch=input("Entrez une phrase : ")

voyelle='aeiouy'
compteur=0
for x in ch :
	if x in voyelle :
		compteur+=1
		
print("La phrase compte {} voyelles.".format(compteur))

Trier trois nombres.

Écrire un programme qui :

  1. demande à l'utilisateur d'entrer trois entiers distincts,
  2. puis affiche ces trois entiers dans l'ordre croissant.

Une solution de l'exercice "Trier trois nombres".


a=int(input("Entrez un entier a : "))
b=int(input("Entrez un entier b : "))
c=int(input("Entrez un entier c : "))

if a>b : a,b = b,a
if b>c : b,c = c,b
if a>b : a,b = b,a
	
print(a, b, c)

Le roi cruel.

Un roi cruel avait pour habitude de proposer le marché suivant à ses condamnés :

  • Tout prisonnier doit choisir entre deux cellules. Chaque cellule peut contenir une corde ou une clef (un seul objet par cellule).
  • Si le prisonnier choisit une cellule avec corde, il sera pendu.
  • Si le prisonnier choisit une cellule avec clef, il sera libéré.

Les cellules contiennent parfois toutes deux une corde ou parfois toutes deux une clef. Parfois l'une contient une clef et l'autre une corde.

Un condamné se présente devant les deux cellules.

  • Sur la porte de la cellule 1 est inscrite l'affirmation A1 suivante : " il y une clef dans cette cellule et une corde dans la cellule d'à côté."
  • Sur la porte de la cellule 2 est inscrite l'affirmation A2 suivante : "il y a une clef dans l'une des cellules et une corde dans l'autre."

Le roi, magnanime, donne une indication (exacte) au prisonnier : "Seule l'une des deux portes porte une indication vraie."

Vous saurez, sans doute, mener le raisonnement simple permettant de découvrir la porte conduisant à la liberté. Mais l'objectif de l'exercice est de passer par une petite programmation.

  1. On note
    • L1 : " la cellule 1 contient une clef."
    • L2 : "la cellule 2 contient une clef."
    Traduire les affirmations A1 et A2 à l'aide des propositions L1 et L2 et des connecteurs logiques et, ou, non.
  2. Ecrire un programme python affichant la table de vérité de A1 et A2 en fonction des valeurs possibles de L1 et L2.
  3. En déduire le choix qui doit être fait par le condamné.

Une solution de l'exercice "Le roi cruel".

Expression de A1 et A2

A1 = L1 et non(L2)

A2 = ( L1 et non(L2) ) ou ( non(L1) et L2 )

Table de vérité de A1 et A2


print("L1\tL2\tA1\tA2")
for L1 in (False, True) :
	for L2 in (False, True) :
		A1 = L1 and not(L2)
		A2 = (L1 and not(L2)) or (not(L1) and L2)
		print("{}\t{}\t{}\t{}".format(L1,L2,A1,A2))

On obtient :

L1	L2	A1	A2
False	False	False	False
False	True	False	True
True	False	True	True
True	True	False	False

Conclusion.

On constate qu'une seule ligne correspond à l'indication "une seule des deux affirmations A1, A2" est vraie.
Il s'agit de la ligne L1=False, L2=True, A1=False, A2=True.
L2 étant vraie, il faut choisir la porte 2.

On peut améliorer le programme en n'affichant que les lignes respectant l'indication du roi :


print("L1\tL2\tA1\tA2")
for L1 in (False, True) :
	for L2 in (False, True) :
		A1 = L1 and not(L2)
		A2 = (L1 and not(L2)) or (not(L1) and L2)
		if ( A1 and not(A2) )  or  ( A2 and not(A1) ):
			print("{}\t{}\t{}\t{}".format(L1,L2,A1,A2))

ce qui donne :

L1	L2	A1	A2
False	True	False	True

Le retour du roi cruel.

On retrouve notre roi cruel.

Un condamné se présente devant les deux cellules.

  • Sur la porte de la cellule 1 est inscrite l'affirmation A1 suivante : "Au moins l'une des deux cellules contient une clef."
  • Sur la porte de la cellule 2 est inscrite l'affirmation A2 suivante : "L'autre cellule contient une corde."

Le roi, magnanime, donne une indication (exacte) au prisonnier : "Les deux inscriptions sont soit toutes deux vraies, soient toutes deux fausses."

Déterminer la réponse à donner en suivant la démarche de l'exercice précédent.

Une solution de l'exercice "Le retour du roi cruel".


print("L1\tL2\tA1\tA2")
for L1 in (False, True) :
	for L2 in (False, True) :
		A1 = L1 or L2
		A2 = not(L1)
		if ( not(A1) and not(A2) )  or  ( A1 and  A2 ):
			print("{}\t{}\t{}\t{}".format(L1,L2,A1,A2))
L1	L2	A1	A2
False	True	True	True

Une seule ligne de la table de vérité correspond donc à l'indication du roi. L2 est vraie dans ce cas : il faut choisir la cellule 2.