Résolue

Projets pour le boulot

# Environnement de travail # Fichiers # Interface graphique

Gabriel Trouvé

Mentor

Bonsoir tout le monde.

J'ai eu une idée de projet à la fin du mentorat. c'est pour le boulot.


En gros une personne saisie un prix d'achat, ça lui calcul un prix de vente en fonction d'un coef.

Il écrit le code article correspondant et les informations sont envoyés dans un fichier txt.


Je viens de le terminer il fonctionne je l'ai testé.


La question c'est, quand on fait un projet pour quelqu'un, si Python n'est pas installé sur son ordi on a pas de moyen de le faire fonctionner ?

Est-ce qu'il faut convertir le script en .exe ? créer une interface graphique etc ??


La question ci-dessus est un peu bête, mais je m'interrogeais sur le "comment livrer un projet fonctionnel à qqun ?"


Merci d'avance




fichier_txt = "pv.txt"


CHOICE = ["1", "2", "3", "4"]


#l'utilisateur fait un choix
#le clacul sera différent selon choix
#lui demander s'il en a d'autre à faire
while True:
    user_choice = input("Choix 1 : coef 1.5 / Choix 2 : coef 1.8 / Choix 3 : STOP ==> ")


    while user_choice not in CHOICE:
        user_choice = input("Choix 1 : coef 1.5 / Choix 2 : coef 1.8 / Choix 3 : STOP / Choix 4 : effacer la liste des prix ==> ")
        if user_choice not in CHOICE:
            print("Rentrez un choix valide.")
    
    if user_choice == "1":
        pa = input("Entrez votre prix d'achat : ")
        while not pa.isdigit():
            pa = input("Entrez votre prix d'achat : ")
        pa = int(pa)
        pv = pa * 1.5
        print(f"Ton PV devrait être de {pv}")
        article = input("code article : ") + " "
        with open(fichier_txt, "a") as f:
            pv = str(pv) + "\n"
            f.write(article)
            f.write(pv)
    
    elif user_choice == "2":
        pa = input("Entrez votre prix d'achat : ")
        while not pa.isdigit():
            pa = input("Entrez votre prix d'achat : ")
        pa = int(pa)
        pv = pa * 1.8
        print(f"Ton PV devrait être de {pv}")
        article = input("code article : ") + " "
        with open(fichier_txt, "a") as f:
            pv = str(pv) + "\n"
            f.write(article)
            f.write(pv)
    
    elif user_choice == "3":
        break


    elif user_choice == "4":
        with open(fichier_txt, "w") as f:
            f.write("")


print("Fin du script !")

Bonsoir. Je suis loin d etre un expert mais il existe des modules pour transformer en exécutable. PyInstaller par exemple.

Hello,


j'ai pas regardé en détail ton script. Tu veux qu'on regarde ?


Pour ce qui est de la partager tu as plein de solutions. Moi j'utilise auto-py-to-exe (une autre lib que celle mentionnée par Eric) il est assez pratique. Il offre une petite UI pour générer ton exe. Je l'ai utilisé sur windows pour les autres plateformes je n'ai jamais utilisé.


Pour une app en mode console je pense que tu n''auras pas de problème.


Mais oui comme le dit Eric, pour partager un script python à quelqu'un qui n'a pas python le mieux c'est un exec sur windows par exemple.


Sinon il y a la solution de streamlit qui te permet de créer une app en ligne à laquelle n'importe qui peut accéder depuis son navigateur sans aucun config et c'est donc cross platform. J'avais fais une session de mentorat là dessus.


Bonne continuation.

Gabriel Trouvé

Mentor

Streamlite c'était ma première session :)

Mon script fonctionne donc piur ça c'est bon. Merci PA !

C'est juste la conversion en .exe


Je viens d'installer auto py. Comment être sûr qu'il soit bien installé ?

Car je ne trouve pas auto py to exe dans mon PC.


merci d'avance

Salut,


si tu fais dans une invit de commande :

auto-py-to-exe

tu as quelque chose ?

Je viens de trouver une solution, je ne sais pas pk je dois faire ça lol. (voir capture pour auto py)


Ah et j'ai trouvé une erreur de script. Quand je rentre un chiffre à virgule le isdigit ne fonctionne pas. Et j'ai pas l'impression que le isdecimal fonctionne non plus.


None

Hello Gabriel,


Tu rentres forcément un nombre entier ?

Je vois ça dans ton script:

pa = input("Entrez votre prix d'achat : ")
while not pa.isdigit():
    pa = input("Entrez votre prix d'achat : ")
    pa = int(pa)


C'est normal si isdigit te retourne False. C'est une méthode de string, il ne peut pas reconnaitre si ce n'est pas un entier.


A ta place je ferai plutôt un truc du genre:


pa=float(input())
while not type(pa) == float:
    ...



un float est un nombre a virgule. Donc même si tu entre en entier ce n'est pas grave. Un entier reste un float particulier avec un ".0"


Gabriel Trouvé

Mentor

Mais oui je suis bête je converti en int alors que je veux des float.

Mais le pblm, c'est que si l'utilisateur ne saisit par un chiffre ça me sort :

ValueError: could not convert string to float: ""


Je n'arrive pas à gérer ce problème. J'ai pensé à une exception mais je ne pense pas que ça soit une bonne manière.


fichier_txt = "pv.txt"


CHOICE = ["1", "2", "3", "4"]


#l'utilisateur fait un choix
#le clacul sera différent selon choix
#lui demander s'il en a d'autre à faire
while True:
    user_choice = input("Choix 1 : coef 1.5 / Choix 2 : coef 1.8 / Choix 3 : STOP / Choix 4 : effacer la liste des prix ==> ")


    while user_choice not in CHOICE:
        user_choice = input("Choix 1 : coef 1.5 / Choix 2 : coef 1.8 / Choix 3 : STOP / Choix 4 : effacer la liste des prix ==> ")
        if user_choice not in CHOICE:
            print("Rentrez un choix valide.")
    
    if user_choice == "1":
        pa = input("Entrez votre prix d'achat : ")


        pa = float(pa)
        pv = pa * 1.5
        print(f"Ton PV devrait être de {pv}")
        article = input("code article : ") + " "
        with open(fichier_txt, "a") as f:
            pv = str(pv) + "\n"
            f.write(article)
            f.write(pv)


    
    elif user_choice == "2":
        pa = input("Entrez votre prix d'achat : ")


        pa = float(pa)
        pv = pa * 1.8
        print(f"Ton PV devrait être de {pv}")
        article = input("code article : ") + " "
        with open(fichier_txt, "a") as f:
            pv = str(pv) + "\n"
            f.write(article)
            f.write(pv)
    
    elif user_choice == "3":
        break


    elif user_choice == "4":
        with open(fichier_txt, "w") as f:
            f.write("")


print("Fin du script !")

Hello,


heu si pourquoi pas une exception sur le data type ? Si ce n'est ni un float, si un int , tu fais fais un raise Exception

Gabriel Trouvé

Mentor

Ok, en fait c'est la première fois que j'utilise une exception hors du cadre théorique.

J'ai bien compris maintenant.


Voici mon code modifié qui gère la ValueError si l'utilisateur rentre n'importe quoi en input.

Tu en avais parlé lors d'un mentora, donc pour except j'ai bien précisé ValueError. Je ne passe pas tout en exception. Même si mon script est minuscule je pense qu'il est toujours préférable de préciser l'erreur à gérer que de laisse tout passer ?


Merci en tous cas !! :)


import pathlib


DOSSIER_COURANT = pathlib.Path.cwd()


creation = DOSSIER_COURANT / "pv.txt"


creation.touch(exist_ok=True)


fichier_txt = "pv.txt"


CHOICE = ["1", "2", "3", "4"]



#l'utilisateur fait un choix
#le clacul sera différent selon choix
#lui demander s'il en a d'autre à faire
while True:
    user_choice = input("Choix 1 : coef 1.5 / Choix 2 : coef 1.8 / Choix 3 : STOP / Choix 4 : effacer la liste des prix ==> ")


    while user_choice not in CHOICE:
        user_choice = input("Choix 1 : coef 1.5 / Choix 2 : coef 1.8 / Choix 3 : STOP / Choix 4 : effacer la liste des prix ==> ")
        if user_choice not in CHOICE:
            print("Rentrez un choix valide.")
    
    if user_choice == "1":
        pa = input("Entrez votre prix d'achat : ")
        try:
            pa = float(pa)
            pv = pa * 1.5
            print(f"Ton PV devrait être de {pv}")
            article = input("code article : ") + " "
            with open(fichier_txt, "a") as f:
                pv = str(pv) + "\n"
                f.write(article)
                f.write(pv)
        except ValueError:
            print("On ne peut rentrer que des chiffres.")


    
    elif user_choice == "2":
        pa = input("Entrez votre prix d'achat : ")
        try:
            pa = float(pa)
            pv = pa * 1.8
            print(f"Ton PV devrait être de {pv}")
            article = input("code article : ") + " "
            with open(fichier_txt, "a") as f:
                pv = str(pv) + "\n"
                f.write(article)
                f.write(pv)
        except ValueError:
            print("On ne peut rentrer que des chiffres.")
    
    elif user_choice == "3":
        break


    elif user_choice == "4":
        with open(fichier_txt, "w") as f:
            f.write("")


print("Fin du script !")

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.