Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Convertisseur de valeurs Python
KikoodxHors ligneMembrePoints: 1262 Défis: 7 Message

Convertisseur de valeurs Python

Posté le 12/03/2019 10:07

Bonjour, j'aimerais vous présenter un programme que j'ai créé et complètement commenté, il permet de convertir des données d'une valeur vers une autre.
Mon programme actuel convertit des unités de temps, mais peut être très aisément tourné en n'importe quel type d'utilitaire du genre, je pense par exemple à un convertisseur de monnaies ou d'unités de mesure.
Voici un exemple :
>  154 secondes, 1 minute et 5 heures                                                                
Convertir vers :
seconde
minute
heure
jour
semaine
(Entrer nom entier)> minute
303.56666666666666


Le code est améliorable, mais j'ai éviter de le complexifier pour qu'il soit facilement lisible, compréhensible et modifiable par un débutant

Le programme est probablement fonctionnel sur 90+e et le MicroPython de Zezombye, mais je n'ai aucun moyen de vérifier cela, et je pense que ce genre d'outils pourrait se révéler utile dans certains cours (en gardant à l'esprit que la 90+e n'a pas le problème des floats binaires), donc si quelqu'un pouvait tester, je lui en lui serait reconnaissant

Je demande des critiques négatives au lecteur, je cherche à m'améliorer

Le programme est en fichier joint (virez l'encodage en haut si vous testez sur calto), ou via ce lien.

Cordialement.

Fichier joint


ManoloHors ligneMembrePoints: 905 Défis: 13 Message

Citer : Posté le 12/03/2019 19:23 | #


cool, mais pourquoi tu l'as pas posté en tant que programme ?

Ajouté le 12/03/2019 à 19:23 :
cool, mais pourquoi tu l'as pas posté en tant que programme ?
KikoodxHors ligneMembrePoints: 1262 Défis: 7 Message

Citer : Posté le 13/03/2019 07:06 | #


Je ne l'ai pas testé sur calculatrice, et le programme en tant que tel est plutôt inutile pour un non-programmeur.
MactulHors ligneMembrePoints: 615 Défis: 0 Message

Citer : Posté le 13/03/2019 14:24 | # | Fichier joint


Si ça intéresse quelqu'un, j'avais fait il y a bien longtemps un convertisseur d'unité de masse ( /!\ sur ordi, pas forcément compatible! )
je le fournis fichier joint
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ
KikoodxHors ligneMembrePoints: 1262 Défis: 7 Message

Citer : Posté le 13/03/2019 15:11 | #


Mactul a écrit :
Si ça intéresse quelqu'un, j'avais fait il y a bien longtemps un convertisseur d'unité de masse ( /!\ sur ordi, pas forcément compatible! )
je le fournis fichier joint

Merci Mactul !
J'ai porté ton programme vers mon système, ce fut très rapide (moins de 10 minutes ) et voici ce que ça donne :
# -*- coding: Latin-1 -*-

# les valeurs associées à leurs clefs utilisées pour la conversation
WEIGHTS = {
    "mg" : 1,
    "cg" : 10,
    "dg" : 100,
    "g" : 1000,
    "dag" : 10000,
    "hg" : 100000,
    "kg" : 1000000
}

total = 0 # variable qui contiendra la somme des valeurs converties à l'unité

userInput = input(">  ") # entrée utilisateur

# listes des chaînes à supprimer dans userInput
toDelete = [
    ",",
    "et",
    "plus",
    "&",
    "+"
]


userInput = userInput.lower() # passe tous les caractères en minuscule

# supprime toutes les occurences de toDelete présentes dans userInput
for value in toDelete:
    userInput = userInput.replace(value, " ")

# supprime les espaces au début et à la fin de la chaîne
userInput = userInput.strip()

# transforme la chaîne en une liste de chaînes
userInput = userInput.split(" ")

# supprime toutes les occurences vides de la liste userInput
i = len(userInput) - 1
while i >= 0:
    if not userInput[i]: del userInput[i]
    i -= 1

# supprime tous les "s" à la fin des mots
for i, value in enumerate(list(userInput)):
    if value[-1] == "s":
        userInput[i] = userInput[i][:-1]

# additionne toutes les valeurs converties à l'unité dans "total"
for i, word in enumerate(userInput):
    if word in WEIGHTS:
        total += WEIGHTS[word] * int(userInput[i-1])

#print(userInput)

# affiche toutes les clefs de WEIGHTS
print("\nConvertir vers :\n")
for word in WEIGHTS:
    print(" " + word)

# demande à l'utilisateur de rentrer la clef correspondant à la valeur choisie
convertInto = input("\n(Entrer nom entier)> ".format(len(WEIGHTS) - 1))

# affiche le résultat, décommenter la dernière ligne pour rajouter une "pause"
print(total / WEIGHTS[convertInto])

input()

Oui j'ai juste changé le nom et le contenu du dictionnaire
MactulHors ligneMembrePoints: 615 Défis: 0 Message

Citer : Posté le 13/03/2019 15:23 | #


Je n'ai pas bien compris le début, mais si ça marche...Tant mieux!
Si tu veux, comme je sais que tu code en python
J'ai plein de programmes hyper simples mais longs à coder que j'ai fait pour apprendre python.
Celui-ci en fait parti
demande-moi
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ
KikoodxHors ligneMembrePoints: 1262 Défis: 7 Message

Citer : Posté le 14/03/2019 16:45 | #


Mactul a écrit :
Je n'ai pas bien compris le début, mais si ça marche...Tant mieux!

Tu n'as pas compris le début de mon poste ou du code ?
Le code, tout ce que j'ai fait c'est modifier un dictionnaire (WEIGHTS) dans mon programme principal
C'était très rapide, et c'était pour montrer qu'il est "modulaire", changer ces données permet de changer le système de conversion.

Mactul a écrit :
Si tu veux, comme je sais que tu code en python
J'ai plein de programmes hyper simples mais longs à coder que j'ai fait pour apprendre python.
Celui-ci en fait parti
demande-moi

Merci mais j'ai déjà des projets en cours

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 26 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd