Création d'une calculatrice sur Python

Bonjour,
J’ai un devoir de créer une calculatrice sur Python mais je suis novice en programmation et n’est donc pas toutes les bases.
J’ai réussi à faire l’affichage d’un écran et des boutons mais pour l’instant la calculatrice ne sait pas calculer. J’ai un inconvénient qui est d’apprendre à la calculatrice à faire toutes les opérations (je sais que Python sait les faire, mais pour mon sujet il n’est pas censé savoir les faire), en partant de l’addition, en lui apprenant chaque addition de 0 à 9, si quelqu’un à des idées pourrait - il m’en faire part ?

De plus il faut que j’ajoute un bouton effacé “Del” mais je ne sais pas comment le définir pour qu’il efface l’écran de la calculatrice

Merci pour votre aide d’avance

J’imagine donc que tu n’as pas le droit de travailler avec les nombres entiers de Python, et que tu dois tout faire avec des chaînes de caractères ?

Si c’est le cas, j’imagine que tu peux t’en sortir avec un papier et un crayon : fais les opérations une fois sur papier « en te regardant faire », puis essaye de reproduire ce que tu fais en Python.

Pour ne pas te donner de réponse pour ton sujet, je vais prendre un exemple proche : savoir si un nombre, disons x, est pair ou impair. La bonne méthode c’est de regarder si le reste de la division entière est nul, x % 2 == 0, ok, mais si on avait pas le droit ? Si on était obligés de travailler avec des chaînes de caractères ? Alors tu le fais « sur papier », disons avec le nombre 82726171816 et tu te regardes faire. Je parie que tu regardes le dernier chiffre, et s’il fait partie de “02468” tu en conclue que c’est pair ? Et voilà tu implémentes :

def is_even(x):
    return x[-1] in "02468"

([-1] ça renvoie le dernier caractère de la chaîne, car oui, on travaille avec des chaînes ici, pas des entiers, on l’a dit plus haut.)

N’hésite pas à partager ton code de temps en temps, c’est beaucoup plus facile de t’aider si « on y voit quelque chose ».

Merci @mdk de m’avoir répondu.
Je n’ai pas tous compris aux chaînes de caractères que vous essayer de m’expliquer.
C’est juste pour la division?, car pour l’instant j’essaie de trouver une solution pour apprendre l’addition, en insérant:
0+0=0
0+1=1
0+2=2

9+9=18

Pour après essayer de faire des additions plus complexes avec des retenus mais pour je n’ai pas trouver comment le définir.

Merci d’avance de m’aider dans ce projet.

Presque. Mon exemple parlait de “est-ce que c’est pair ou impair”, donc “est-ce que c’est divisible”.

J’essayais de te donner des pistes sans pour autant te faire ton devoir.

Si tu veux t’y prendre comme tu le décris, de 0+0 à 9+9 ça va être long, très long :

def add(a, b):
    if a == "0" and b == "0":
        return "0"
    if a == "0" and b == "1":
        return "1"
    if a == "0" and b == "2":
        return "2"
    if a == "0" and b == "3":
        return "3"
    if a == "0" and b == "4":
        return "4"
    if a == "0" and b == "5":
        return "5"
    if a == "1" and b == "0":
        return "1"
    if a == "1" and b == "1":
        return "2"
    if a == "1" and b == "2":
        return "3"
    if a == "1" and b == "3":
        return "4"
    if a == "1" and b == "4":
        return "5"
    if a == "1" and b == "5":
        return "6"
    if a == "2" and b == "0":
        return "2"
    if a == "2" and b == "1":
        return "3"
    ...
    ...

Là c’est l’ordinateur qui te fait travailler, et tu va le détester. Non il faut faire travailler l’ordinateur (tout en respectant le sujet, que je n’ai pas lu…).

Je pense que quand tu suit mon conseil (de faire la chose sur papier en te regardant faire avant de l’implémenter), il faut peut-etre que tu te mette dans la place d’un enfant.

Un enfant n’apprend pas par cœur combien font 8 + 9, et pourtant il y arrive, donc ton programme n’a pas à savoir par coeur combien font 8 + 9.

Tu dois donc réussir a comprendre comment l’enfant fait, et faire faire la même chose à Python.

Un jeune enfant, face à 3 + 2 va partir de zéro, ouvrir trois doigts d’une main, deux doigts de l’autre, et les compter : “un, deux, trois” en comptant les trois doigts d’une main, puis “quatre cinq” en comptant deux doigts de l’autre main, en Python ça ressemble à ça :

def add(a, b):
    total = "0"  # L'enfant part de zéro.
    while a != "0":  # Il compte les doigts de la première main jusqu'à ce qu'il n'y en ai plus.
        total = successor(total) # A chaque chiffre qu'il prononce, il passe au suivant.
        a = predecessor(a) # Et donc il y a un doigt de moins à compter sur cette main.
    while b != "0":  # Pareil avec l'autre main
        total = successor(total)
        b = predecessor(b)
    return total

Bon ça nécessite d’implémenter successor et predecessor (je te laisse faire).

Pour continuer sur cette lancée, tu peux te mettre à la place d’un autre enfant, un peu moins jeune.

Un enfant un peu moins jeune va “surcompter”, c’est à dire qu’au lieu de compter “un deux trois” pour arriver à trois il va partir de trois directement. Pour trois plus deux il va juste utiliser deux doigts et dire “quatre cinq”. C’est plus simple pour lui, et c’est donc plus facile à implémenter en Python :

def add(a, b):
    while b != "0": # Tant que sur l'autre main il y a des doigts à compter...
        a = successor(a)  # On compte.
        b = predecessor(b)  # Et donc il y a un doigt de moins à compter.
    return a

Après j’ignore si j’ai bien compris ton sujet, je ne l’ai pas lu.

[shameless advertisment]
Si tu manque simplement de pratique en rédaction de Python tu peux t’entrainer sur https://hackinscience.org, c’est des exercices beaucoup plus simple pour te faire la main avant de t’attaquer à la calculatrice.
[/shameless advertisment]

1 « J'aime »