Corrections

Devinettes numériques

La classique

# un script possible

from random import randint

N = randint(1,150)

E = randint(1,N)

n = int(input('Quelle est ta proposition ? '))

essai = 1

while n != E:

if n > E:

print('Le nombre que tu cherches est plus petit')

else:

print('le nombre que tu cherches est plus grand')

n = int(input('Quelle est ta proposition ? '))

essai = essai +1

print('Bravo, tu as trouvé le bon nombre !')

print("Il t'a fallu",essai,"essais")


La climatique

# un script possible

from random import randint


N = randint(1,100)

n = int(input('Quelle est ta proposition ? '))

essai = 1


while n != N:

distance = abs(n-N) #on évalue la distance entre la proposition et le nombre cherché

if distance > 50:

print('glacé, brrr !')

elif distance > 30:

print('froid ....')

elif distance > 20:

print("le fond de l'air est frais")

elif distance > 10:

print('tiède, tiède')

elif distance >= 5:

print('mmh, bien chaud..')

elif distance >=1:

print('ça brule !')


if distance >=1: # si le nombre n'a pas été trouvé, il faut recommencer

n = int(input('Quelle est ta proposition ? '))

essai = essai +1

else:

print ('Bravo !')

# la boucle 'while' s'arrete ici


print('Bravo, tu as trouvé le bon nombre !')

print("Il t'a fallu",essai,"essais")


La grandissante

# un script possible

from random import randint

n = randint(1,9)

a = 0

while a!=n:

a = int(input('propose un nombre: '))

if a!=n :

n=2*n

print('Bravo')

La stratégique

from random import randint

N= randint(10,20)

while N>1 and N<=50:

div=int(input('propose un diviseur: '))

if N%div==0:

print('bien vu, tu as résussi à diviser le nombre inconnu!')

N=N//div

else:

N=2*N+1

print('oups, le nombre a été remplacé par son double augmenté de 1 !')

if N==1:

print('Bravo !')

else:

print('Raté !')

Jeux de caractères

Reconnaissance d'anagrammes

# un script possible

print("Ce programme permet d'identifier 2 anagrammes\n")

mot1 = input('Veuillez entre le premier mot: ')

mot2 = input('Veuillez entre le deuxième mot: ')


# On teste d'abord si les deux mots ont la meme taille

OK = (len(mot1)==len(mot2))

if OK:

# On teste si toutes les lettres du mot1 sont des lettres du mot2

for lettre in mot1:

OK = OK and (lettre in mot2)

if OK:

# On teste maintenant si toutes les lettres du mot2 sont des letres du mot1. Il est nécessaire de le faire: exempple mot1=papa et mot2 = papi

for lettre in mot2:

OK = OK and (lettre in mot1)

if OK:

print ('\nles deux mots sont des anagrammes')

else:

print('\nles deux mots ne sont pas des anagrammes')

-----------------------------------------------------------------------------------------------------------------------------------------------------------

# un autre script possible

print("Ce programme permet d'identifier 2 anagrammes\n")

mot1 = list(input('Veuillez entre le premier mot: '))

mot2 = list(input('Veuillez entre le deuxième mot: '))


OK = True # On suppose au départ qu'il s'agit d'anagrammes

motB = mot2.copy()

# On fait une copie de mot2 pour le conserver au cas où. Ce n'est pas vraiment indispensable

for lettre in mot1:

# On essaye d'éliminer chaque lettre du mot1 dans le mot2

try:

motB.remove(lettre)

except:

OK = False

# Il ne reste qu'à vérifier que motB est bien vide maintenant

OK = OK and (motB == [])

if OK:

print ('\nles deux mots sont des anagrammes')

else:

print('\nles deux mots ne sont pas des anagrammes')


Jeu de substitution

# un script possible

print('Avec ce programme, vous pouvez substituer une à une les lettres du vers ci-dessous:')

print('Note: appuyez sur la touche entrée pour arreter')

vers = 'je veux une vie en forme de chose'


# toute la partie suivante consiste uniquement à saisir les voeux du joueur au clavier en s'assurant que:

# le joueur peut sortir en appuyant sur entrée (cible = '')

# le caractère ciblé existe bien dans la phrase

cible = 'a'

while cible !='':

print('\n"'+vers+'"\n')

cible = input('Entrez le caractère que vous souhaitez substituer: ')

while (cible !='') and (cible not in vers):

print("Ce caractère n'est pas dans la phrase, recommencez")

cible = input('Entrez le caractère que vous souhaitez substituer: ')

code = ''

while (code =='') and (cible !=''):

code = input('Entrez le caractère à lui substituer: ')


# plutot que substituer une lettre par une autre, on décide de construire la nouvelle phrase codée, lettre par lettre

NouveauVers = ''

for lettre in vers:

if lettre == cible:

NouveauVers = NouveauVers + code

else:

NouveauVers = NouveauVers + lettre

# on remplace l'ancienne phrase par la nouvelle

vers = NouveauVers

print('\nAu revoir !')





Le code de César

print("Ce programme vous permet de coder une phrase selon le Code de César. Pour cela, il faudra entrer la phrase que vous souhaitez coder en la composant uniquement de lettres minuscules (sans accent, ni ponctuation) et d'espaces\n")


phrase = input("saisir la phrase d'origine: ")

liste=list(phrase.split(' ')) # cette unique commande range dans une liste les mots de la phrase séparés par un espace


decalage = 0

while decalage not in range(1,26):

decalage = int(input('quel décalage souhaitez-vous ? '))


listecodee = [] # cette nouvelle liste recevra les mots codés

for mot in liste: # boucle sur chaque mot de la liste

motcode = ''

for lettre in mot: # boucle sur chaque lettre d'un mot

nouvellepositionASCII = ord(lettre)+decalage

if nouvellepositionASCII > 122:

nouvellepositionASCII = nouvellepositionASCII-26

motcode = motcode + chr(nouvellepositionASCII) # construction du mot codé, lettre par lettre

listecodee.append(motcode) # ajout du nouveau mot codé dans la nouvelle liste


for mot in listecodee: # affichage de la phrase codée, mot après mot

print(mot, end=' ')

print()


Jeux de dés

La pile

# un script possible

from random import randint

print("A chaque tourl'ordinatuer tire un dé mystère. Vous devez ensuite proposer un nombre entre 1 et 6 (compris). Si la heuteur de la pile est un multiple de 5, elle s'effondre ! Saurez-vous aller jusqu'à 50 ?\n")

pile = 0

while pile < 50:

pile = pile + randint(1,6)

pile = pile + int(input('propose une entier entre 1 et 6: '))

if pile%5==0:

pile=0

print('la pile a maintenant atteint la hauteur suivante:',pile)

print('Bravo !')


# un script amélioré avec un controle à la saisie

from random import randint

print("A chaque tour l'ordinatuer tire un dé mystère. Tu dois ensuite proposer un nombre entre 1 et 6 (compris). Ces deux nombres sont ajoutés à la pile. Attention ! Si la hauteur de la pile est un multiple de 5, elle s'effondre ! Pourras-tu aller jusqu'à 50 ?\n")

pile = 0

print('La pile est vide. Bon jeu !\n')

while pile < 50:

pile = pile + randint(1,6)


n = int(input('propose une entier entre 1 et 6: '))

while n not in range (1,7):

n = int(input("l'entier que tu as choisi n'est pas entre 1 et 6, recommence: "))


pile = pile + n

if pile%5==0:

pile=0

print('oups, la pile vient de tomber à 0...')

else:

print('la pile a maintenant atteint la hauteur suivante:',pile)

print('Bravo !')





La somme mystère

# un script possible

from random import randint


while True: # cette instruction permet de recommencer infiniment le jeu

D1 = randint(1,6)

D2 = randint(1,6)

D3 = randint(1,6)

print('La somme des trois dés vaut',D1+D2+D3)

print('Sauras-tu deviner la valeur du nombre mystérieux?\n')

essai = 1

# on crée une liste afin de pouvoir la trier dans l'ordre croissant

L = [D1,D2,D3]

L.sort()

NombreMystere = L[0]*100+L[1]*10+L[2]

OK = False # Ok est un booléen qui indique que le joeur a trouvé la solution. Au départ, il est donc initailisé à la valeur Faux


# Ci-dessous commence l'interaction avec le joueur. Celui-ci a droit à trois essais

while essai<=3 and not OK: # La boucle s'interrompt après trois essais ou si OK est vrai

n = int(input('Donne ta proposition: '))

essai = essai + 1

if n > NombreMystere:

print('Le nombre que tu cherches est plus petit')

elif n < NombreMystere:

print('Le nombre que tu cherches est plus grand')

else:

print('Bravo !')

OK = True

# Ici s'arrete la boucle


if not OK: # Si le joueur n'a pas trouvé la solution, on affiche le nombre mystère

print('Désolé, le nombre cherché était',NombreMystere)

print() # cet affichage sert uniquement à sauter une ligne avant le début d'une nouvelle partie



Le duel

#un script possible

from random import randint


score = 10

while score in range(1,20):


N1 = randint(1,12)

print("\nL'ordinateur vient d'obtenir", N1)

nb = int(input('Combien de dés veux-tu lancer pour essayer de faire mieux ? '))


somme = 0

print('Voici ce que tu as obtenu: ', end='')

for i in range(nb):

d = randint(1,6)

somme = somme + d

print(d, end =',')

print(' pour un total de', somme)

if somme >= N1:

print('bravo!', end=' ')

score = score +4-nb

else:

print('pas de chance !', end=' ')

score = score - nb

print('Ton score vaut maintenant: ', score)


if score <=0:

print('\nDésolé, tu as perdu')

else:

print('\nFélicitations, tu as gagné !')



Marche aléatoire

L'ivrogne

# un script possibe

from random import randint


x,pas = 0,0

while abs(x) < 15:

n = randint(1,2)

pas = pas+1

if n == 1:

x = x -1

else:

x = x +1

print(x, pas)


# un autre script possible -----------------------------------------------

from random import choice


x,pas = 0,0

Mouv = [-1,1]

while abs(x) < 15:

x = x + choice(Mouv)

pas = pas + 1

print("L'ivrogne a fait",pas,"pas avant de pouvoir s'éloigner de 15 mètres de sa position initiale")



# encore un autre script possible --------------------------------------

from random import choice


x,pas = 0,0

Pos = [x]

Mouv = [-1,1]

while abs(x) < 15:

x = x + choice(Mouv)

Pos.append(x)

pas = pas + 1

print("L'ivrogne a fait",pas,"pas avant de pouvoir s'éloigner de 15 mètres de sa position initiale")

print('voici la liste de ses positions successives:')

print(Pos)






Le voleur et la police

# Un script possible

from random import choice


Mouv = [-3,1,7,13]

x = choice(Mouv)

Prison = False


while x < 50 and not Prison:

print('Inspecteur, où doit-on placer nos trois hommes ?')

a,b,c = input('Donner trois entiers entre 15 et 49, séparés par une virgule: ').split(',')

Police = [int(a),int(b),int(c)]

x = x + choice(Mouv)

Prison = x in Police


if Prison:

print('Chef, nous avons arrété le voleur à la position',x,' !')

else:

print('Chef, le voleur nous a encore échappé... Désolés')



# Un scipt un peu amélioré -----------------------------------------------------------------

from random import choice


Mouv = [-3,1,7,13]

x = choice(Mouv)

print('Inspecteur, où doit-on placer nos trois hommes ?')

a,b,c = input('Donner trois entiers entre 15 et 49, séparés par une virgule: ').split(',')

Police = [int(a),int(b),int(c)]

Prison = x in Police

while x < 50 and not Prison:

Change = input('Chef, rien à signaler... Doit-on changer de position (O/N)? ')

if Change == 'O':

a,b,c = input('Donner trois entiers entre 15 et 49, séparés par une virgule: ').split(',')

Police = [int(a),int(b),int(c)]

x = x + choice(Mouv)

Prison = x in Police

if Prison:

print('Chef, nous avons arrété le voleur à la position',x,' !')

else:

print('Chef, le voleur nous a encore échappé... Désolés')



# un script encore meilleur, avec des fonctions de controle -----------------------------------------------------------

from random import choice


def Change():

C = input('\nChef, rien à signaler... Doit-on changer de positions (O/N)? ')

while C !='O' and C != 'N':

C = input("Chef, je n'ai pas compris, doit-on changer de positions (O/N)? ")

return C


def Positions():

while True:

try:

a,b,c = input('Donner trois entiers entre 15 et 49, séparés par une virgule: ').split(',')

if int(a) in range(15,50) and int(b) in range(15,50) and int(c) in range(15,50):

return [int(a),int(b),int(c)]

except:

pass

print("Chef, nous n'avons pas bien compris où nous devons aller... Pouvez-vous répéter ?")

a,b,c = input('Donner trois entiers entre 15 et 49, séparés par une virgule: ').split(',')


#MAIN

Mouv = [-3,1,7,13]

x = choice(Mouv)

Police = Positions()

Prison = x in Police

while x < 50 and not Prison:

if Change() == 'O':

Police = Positions()

x = x + choice(Mouv)

Prison = x in Police

if Prison:

print('Chef, nous avons arrété le voleur à la position',x,' !')

else:

print('Chef, le voleur nous a encore échappé... Désolés')