#BEGINPROF

################
##            ##
## Exercice 1 ##
##            ##
################
print("Exercice 1\n")

## Question 1.1

p=5
q=3*p # Le symbole * est obligatoire (on ne peut pas écrire 3p)


## Question 1.2

print('p vaut',p, 'et q vaut',q, '; leur somme vaut', p+q)

## Question 1.3

p%q == 0

## Question 1.4

tmp=p
p=q
q=tmp

## Question 1.5

(1+2+3+4+5+6+7+8+9+10)/10

## Question 1.6

(1+2+3+4+5+6+7+8+9+10+11)/11

## Question 1.7

import math
math.gcd(51,85) # Calcul le PGCD de 51 et 85

## Question 1.8

5**4 > 4**5

## Question 1.9

help(max)




################
##            ##
## Exercice 2 ##
##            ##
################
print("\nExercice 2\n")



r = 0
m = int(input("Entrer un nombre entre 0 et 999 :"))

c = m%10
r = r*10 + c
m = m//10
print(c)

c = m%10
r = r*10 + c
m = m//10
print(c)

c = m%10
r = r*10 + c
m = m//10

print(c)
print(r)


## Question 2.3


## Question 2.4


## Question 2.5




##ENDPROF

################
##            ##
## Exercice 3 ##
##            ##
################
print("\nExercice 3\n")

## Question 3.1

def réduction(n):
    if n>=50:
        return 20
    elif n>=10:
        return 10
    else:
        return 0

assert réduction(100) == 20
assert réduction(50) == 20
assert réduction(49) == 10
assert réduction(10) == 10
assert réduction(9) == 0


## Question 3.2

def prix_livraison(prix):
    prix_l = prix*0.1 # 10% de prix
    if prix_l > 100:
        return 100
    elif prix_l < 5:
        return 5
    else:
        return prix_l

assert prix_livraison(200) == 20
assert prix_livraison(1000) == 100
assert prix_livraison(1001) == 100
assert prix_livraison(50) == 5
assert prix_livraison(49.5) == 5

## Question 3.3
def facture(n,p):
    prix = n*p
    r = réduction(n)
    l = prix_livraison(prix)
    prix_final = prix * (1-r/100)+l
    print("Prix :",prix,"€")
    print("Réduction : -",r,"%")
    print("Coût livrasion :",l,"€ ")
    print("----------------------")
    print("Prix total (dont livraison) :",prix_final,"€")


facture(11,14)

################
##            ##
## Exercice 4 ##
##            ##
################
print("\nExercice 4\n")

## Question 4.1


choix_humain = input('quel est ton choix, humain ? ')
print('Humain, tu as choisi', choix_humain)

## Question 4.1

if choix_humain=='pierre' or choix_humain=='feuille' or choix_humain=='ciseaux':
    print('ok')
else :
    print('choix incorrect, je choisis pour toi...')


## Question 4.3

from random import randint

def choix_ordi():
    choix = randint(0,2)
    if choix == 0 :
        return 'pierre'
    elif choix == 1 :
        return 'feuille'
    else :
        return 'ciseaux'

if choix_humain=='pierre' or choix_humain=='feuille' or choix_humain=='ciseaux':
    print('ok')
else :
    choix_humain = choix_ordi()
    print('Choix incorrect, je choisis pour toi : ', choix_humain)


## Question 4.4



choix_ordinateur = choix_ordi()
print('Humain :',choix_humain)
print('Ordinateur :',choix_ordinateur)

"""
# Solution 1

if choix_humain == 'pierre' and choix_ordinateur == 'pierre' :
    print('Vainqueur : égalite')
if choix_humain == 'pierre' and choix_ordinateur == 'feuille' :
    print('Vainqueur : ordi')
if choix_humain == 'pierre' and choix_ordinateur == 'ciseaux' :
    print('Vainqueur : humain')
# ...
# Et on continue comme ça pour les 6 autres cas. C’est fastidieux
# En info, il faut être paresseux et chercher à faire plus simple.
"""
"""
# Solution 2

if choix_humain == 'feuille' :
    if choix_ordinateur == 'pierre' :
        print('Vainqueur : humain')
    if choix_ordinateur == 'feuille' :
        print('Vainqueur : égalite')
    if choix_ordinateur == 'ciseaux' :
        print('Vainqueur : ordi')

if choix_humain == 'ciseaux' :
    ...
"""

# Solution 3

# Quels sont les trois cas qui font gagner l'être humain ?
cas_gagnant_1 = (choix_humain == 'pierre'  and choix_ordinateur == 'ciseaux')
cas_gagnant_2 = (choix_humain == 'feuille' and choix_ordinateur == 'pierre')
cas_gagnant_3 = (choix_humain == 'ciseaux' and choix_ordinateur == 'feuille')

if choix_humain == choix_ordinateur :
    print('Vainqueur : égalite')
elif cas_gagnant_1 or cas_gagnant_2 or cas_gagnant_3:
    print('Vainqueur : humain')
else :
    print('Vainqueur : ordinateur')












################
##            ##
## Exercice 5 ##
##            ##
################
print('\nExercice 5\n')


## Question 5.1



def essai(prix):
    pronostic = int(input('Quel est votre pronostic ?'))
    if pronostic == prix:
        print('Trop bien !')
        return True
    elif pronostic > prix:
        print('Trop haut !')
        return False
    else:
        print('Trop bas !')
        return False


def juste_prix_essais(n,prix):
    if n == 0:
        return False
    else:
        tentative = essai(prix)
        if tentative:
            return True
        else:
            return juste_prix_essais(n-1,prix)

# On peut écrire juste_prix_essais de manière plus dense.
# À vous de choisir la méthode qui vous semble la plus simple à comprendre.
def juste_prix_essais(n,prix):
    if n == 0:
        return False
    else:
        return essai(prix) or juste_prix_essais(n-1,prix)



def juste_prix():
    prix = randint(0,100)
    trouvé = juste_prix_essais(7,prix)
    if trouvé:
        print('Gagné !')
    else:
        print('Essais épuisés, perdu, la valeur était', prix,trouvé)


juste_prix()

## Question 5.2


## Question 5.3


def essai_ordinateur(valeur_min, valeur_max):
    if valeur_min > valeur_max:
        return False
    essai = (valeur_min + valeur_max) // 2
    print('Je devine', essai)
    estimation = input()
    if estimation == '=':
        return True
    elif estimation == '+':
        return essai_ordinateur(essai + 1, valeur_max)
    else: # estimation == '-'
        return essai_ordinateur(valeur_min, essai - 1)


def juste_prix2():
    trouvé = essai_ordinateur(0,100)
    if not trouvé:
        print('Tricheur !')

juste_prix2()
