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')