NSI,2022-2023, programme en python pour s’entraîner aux conversions

Le programme :

from random import randint

def reponse_question1(nombre):
    '''
    convertit un nombre en base 2 en base 10
    : nombre : nombre ecrit en binaire, str
    : return : un entier
    >>>reponse_question1('1100')
    12
    '''
    return int("0b"+nombre,2)

def reponse_question2(nombre):
    '''
    convertit un nombre en base 10 en base 2
    : nombre : int
    : return : str
    >>>reponse_question2(21)
    '10101'
    '''
    return bin(nombre)[2:]

def reponse_question3(nombre):
    '''
    convertit un nombre en base 10 en hexadecimal
    : nombre : int
    : return : str
    >>>reponse_question3(21)
    '15'
    '''
    return hex(nombre)[2:]

def reponse_question4(nombre):
    '''
    convertit un hexadecimal en nombre entier
    : nombre : str
    : return : str
    >>>reponse_question4("b3")
    179
    '''
    return int("0x"+nombre,16)

def reponse_question5(nombre):
    '''
    convertit un binaire en hexadecimal
    : nombre : str
    : return : str
    >>>reponse_question5("10011100")
    "9c"
    '''
    return hex(int("0b"+nombre,2))[2:]

def question1():
    ''' renvoie la question 1 avec sa reponse
    : return : str,str
    '''
    question="Donner l'écriture décimale ( en base 10 ) du nombre binaire suivant : "
    nombre=randint(100,255) # tire un nombre entier au hasard entre 100 et 255
    ecriture_nombre=bin(nombre)[2:]
    question+=ecriture_nombre
    return question,reponse_question1(ecriture_nombre)
    
def question2():
    ''' renvoie la question  avec sa reponse
    : return : str,str
    '''
    question="Donner l'écriture binaire ( en base 2 ) du nombre décimal suivant (écrit en base 10 ) : "
    nombre=randint(100,255) # tire un nombre entier au hasard entre 100 et 255

    question+=str(nombre)
    return question,reponse_question2(nombre)

def question3():
    ''' renvoie la question  avec sa reponse
    : return : str,str
    '''
    question="Donner l'écriture hexadécimale ( en base 16 ) du nombre décimal suivant (écrit en base 10 ) : "
    nombre=randint(161,255) # tire un nombre entier au hasard entre 100 et 255

    question+=str(nombre)
    return question,reponse_question3(nombre)

def question4():
    ''' renvoie la question  avec sa reponse
    : return : str,str
    '''
    question="Donner l'écriture décimale ( en base 10 ) du nombre hexadécimal suivant (écrit en base 16 ) : "
    nombre=randint(17,255) # tire un nombre entier au hasard entre 100 et 255

    question+=hex(nombre)[2:]
    return question,reponse_question4(hex(nombre)[2:])

def question5():
    ''' renvoie la question  avec sa reponse
    : return : str,str
    '''
    question="Donner l'écriture hexadécimale (écrit en base 16 ) du nombre binaire suivant : "
    nombre=randint(128,255) # tire un nombre entier au hasard entre 100 et 255

    question+=bin(nombre)[2:]
    return question,reponse_question5(bin(nombre)[2:])

def revisions():
    note=0
    #question 1
    question=question1()
    texte_question=question[0]
    reponse_question=str(question[1])
    print(texte_question)
    reponse=input("?")
    if reponse==reponse_question:
        print("Bravo")
        note+=1
    else :
        print("Désolé, la bonne réponse était "+str(reponse_question))
    #question2
    question=question2()
    texte_question=question[0]
    reponse_question=str(question[1])
    print(texte_question)
    reponse=input("?")
    if reponse==reponse_question:
        print("Bravo")
        note+=1
    else :
        print("Désolé, la bonne réponse était "+str(reponse_question))
    #question3
    question=question3()
    texte_question=question[0]
    reponse_question=str(question[1])
    print(texte_question)
    reponse=input("?")
    if reponse==reponse_question:
        print("Bravo")
        note+=1
    else :
        print("Désolé, la bonne réponse était "+str(reponse_question))
    #question4
    question=question4()
    texte_question=question[0]
    reponse_question=str(question[1])
    print(texte_question)
    reponse=input("?")
    if reponse==reponse_question:
        print("Bravo")
        note+=1
    else :
        print("Désolé, la bonne réponse était "+str(reponse_question))
    #question5
    question=question5()
    texte_question=question[0]
    reponse_question=str(question[1])
    print(texte_question)
    reponse=input("?")
    if reponse==reponse_question:
        print("Bravo")
        note+=1
    else :
        print("Désolé, la bonne réponse était "+str(reponse_question))
    # note
    note*=2
    print (" votre note :"+str(note)+"/10")
    

Après exécution , on a en console :

>>> revisions()
Donner l'écriture décimale ( en base 10 ) du nombre binaire suivant : 11001101
?205
Bravo
Donner l'écriture binaire ( en base 2 ) du nombre décimal suivant (écrit en base 10 ) : 110
?1101110
Bravo
Donner l'écriture hexadécimale ( en base 16 ) du nombre décimal suivant (écrit en base 10 ) : 191
?bf
Bravo
Donner l'écriture décimale ( en base 10 ) du nombre hexadécimal suivant (écrit en base 16 ) : a5
?171
Désolé, la bonne réponse était 165
Donner l'écriture hexadécimale (écrit en base 16 ) du nombre binaire suivant : 11110110
?a0
Désolé, la bonne réponse était f6
 votre note :6/10