Addition de variables type "float"
Signaler
jipi10
Phil_1857
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
A voir également:
- Addition de variables type "float"
- Variable type float - Articles
- Type float java - Articles
- Type float c++ - Articles
- Addition de variable ✓ - Forum - Python
- Variable type char en langage C ✓ - Forum - C
15 réponses
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Suite:
Et je souhaite avoir une restitution par une commande type doc.write(a)
sous la forme 1 000,00 (séparateur des mille et deux chiffres après la virgule).
Merci par avance.
Et je souhaite avoir une restitution par une commande type doc.write(a)
sous la forme 1 000,00 (séparateur des mille et deux chiffres après la virgule).
Merci par avance.
georges97
- Messages postés
- 6746
- Date d'inscription
- lundi 31 janvier 2011
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
Bonjour,
On a tous été noob un jour, ce n'est pas un défaut. Je dirais même que c'est un état permanent, nous sommes tous le noob de quelqu'un.
Par ailleurs, la possibilité d'une aide est facilitée par l'utilisation des balises de code, qui permet d'une part de vérifier que vous ayez respecté la syntaxe de python et notamment l'indentation, d'autre part qu'apparaissent les messages d'erreur, qui sont un élément important de la progression en matière de codage.
le mode d'emploi est ici et vous pourrez le vérifier immédiatement:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Sur vos questions:
bien que python repose sur le typage dynamique des variables, la syntaxe de la vesrion 3.x implique un string comme résultat d'un input, d'où le message d'erreur.
Pour entrer une variable int votre instruction devrait être sous la forme:
a = int(input("Combien vaut a ? "))
ce qui donnerait directement un entier et éviterait le recours 'la a déclaration dans votre dernière ligne.
Je vous laisse deviner ce qu'il faut écrire pour un float
Pour la deuxième question, le temps que je vérifie un autre intervenant aura donné la syntaxe mais cela repose sans doute sur l'utilisation de la fonction format() puis de la fonction write() pour écrire dans un fichier.
Cordialement
On a tous été noob un jour, ce n'est pas un défaut. Je dirais même que c'est un état permanent, nous sommes tous le noob de quelqu'un.
Par ailleurs, la possibilité d'une aide est facilitée par l'utilisation des balises de code, qui permet d'une part de vérifier que vous ayez respecté la syntaxe de python et notamment l'indentation, d'autre part qu'apparaissent les messages d'erreur, qui sont un élément important de la progression en matière de codage.
le mode d'emploi est ici et vous pourrez le vérifier immédiatement:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Sur vos questions:
bien que python repose sur le typage dynamique des variables, la syntaxe de la vesrion 3.x implique un string comme résultat d'un input, d'où le message d'erreur.
Pour entrer une variable int votre instruction devrait être sous la forme:
a = int(input("Combien vaut a ? "))
ce qui donnerait directement un entier et éviterait le recours 'la a déclaration dans votre dernière ligne.
Je vous laisse deviner ce qu'il faut écrire pour un float
Pour la deuxième question, le temps que je vérifie un autre intervenant aura donné la syntaxe mais cela repose sans doute sur l'utilisation de la fonction format() puis de la fonction write() pour écrire dans un fichier.
Cordialement
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Grazie mille Georges !
georges97
- Messages postés
- 6746
- Date d'inscription
- lundi 31 janvier 2011
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
Infos sur le formatage:
https://stackoverflow.com/questions/6149006/display-a-float-with-two-decimal-places-in-python
https://docs.python.org/fr/3.9/library/stdtypes.html
A regarder pour la fonction write()
https://docs.python.org/3/tutorial/inputoutput.html
Je n'ai pas vérifié si l'on peut y insérer la fonction float() ou s'il faut d'abord réaliser une conversion de float formaté en string, mais c'est un bel exercice de vérifier qu'on peut intégrer le float dans un write().
Sous la forme write(format(..))
Ce serait bien de nous faire un retour sous forme d'un script sous balises.
Merci d'avance.
https://stackoverflow.com/questions/6149006/display-a-float-with-two-decimal-places-in-python
https://docs.python.org/fr/3.9/library/stdtypes.html
A regarder pour la fonction write()
https://docs.python.org/3/tutorial/inputoutput.html
Je n'ai pas vérifié si l'on peut y insérer la fonction float() ou s'il faut d'abord réaliser une conversion de float formaté en string, mais c'est un bel exercice de vérifier qu'on peut intégrer le float dans un write().
Sous la forme write(format(..))
Ce serait bien de nous faire un retour sous forme d'un script sous balises.
Merci d'avance.
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Ok. J'ai survolé les liens, ça a l'air de bien dégrossir la question.
Je vais potasser ça ce soir.
Encore merci Georges !
Je vais potasser ça ce soir.
Encore merci Georges !
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Georges explique dans son message que les versions postérieures à la 3.0 considèrent la variable issue d'un INPUT comme un string.
peut-être utilises-tu une version antérieure.
peut-être utilises-tu une version antérieure.
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
non, je suis en 3.7.2
donc la variable issue de input est bien une string
mais ensuite float(a) converti bien la string a en float, de même pour b
et ca donne ce que tu vois sur mon image ...
il marche très bien ton code
donc la variable issue de input est bien une string
mais ensuite float(a) converti bien la string a en float, de même pour b
et ca donne ce que tu vois sur mon image ...
il marche très bien ton code
georges97
- Messages postés
- 6746
- Date d'inscription
- lundi 31 janvier 2011
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
Bonjour Phil,
Je n'ai effectivement testé que la première ligne (dans thonny, qui se prête au code sans enregistrer le script, comme tu le sais sans doute) puisqu'il signalait avoir eu un message d'erreur.
As-tu une idée d'où ça vient? de l'IDE utilisé. C'est quand même surprenant non?
jipi aura découvert une autre méthode, qui lui servira peut-être par ailleurs.
Je vais faire ton test, pour ma propre culture, sans aucun doute du résultat.
Et pour ce que je suggère plus loin, est-il possible de mixer le write() et le format()
Ca m'a donné l'occasion de te saluer.
A plus
Je n'ai effectivement testé que la première ligne (dans thonny, qui se prête au code sans enregistrer le script, comme tu le sais sans doute) puisqu'il signalait avoir eu un message d'erreur.
As-tu une idée d'où ça vient? de l'IDE utilisé. C'est quand même surprenant non?
jipi aura découvert une autre méthode, qui lui servira peut-être par ailleurs.
Je vais faire ton test, pour ma propre culture, sans aucun doute du résultat.
Et pour ce que je suggère plus loin, est-il possible de mixer le write() et le format()
Ca m'a donné l'occasion de te saluer.
A plus
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Bonjour Georges,
Oui, c'est bizarre, son code tout simple fonctionne sans erreur
Personnellement, j'ai IDLE comme IDE, mais en fait, j'utilise mon éditeur de texte favori
(UltraEdit32), et j'exécute en double-cliquant le fichier .py dans mon répertoire
Oui, c'est bizarre, son code tout simple fonctionne sans erreur
Personnellement, j'ai IDLE comme IDE, mais en fait, j'utilise mon éditeur de texte favori
(UltraEdit32), et j'exécute en double-cliquant le fichier .py dans mon répertoire
georges97
- Messages postés
- 6746
- Date d'inscription
- lundi 31 janvier 2011
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
Attendons le retour de jipi.
Je t'ai repéré sur un circuit automobile et n'ai pas eu de réponse à ma question:
est-il possible de mixer le write() et le format()
L'ivresse de la vitesse?
Je t'ai repéré sur un circuit automobile et n'ai pas eu de réponse à ma question:
est-il possible de mixer le write() et le format()
L'ivresse de la vitesse?
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
- Messages postés
- 6746
- Date d'inscription
- lundi 31 janvier 2011
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
write, c'est pour écrire dans un fichier ...
georges97
- Messages postés
- 6746
- Date d'inscription
- lundi 31 janvier 2011
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
J'ai eu l'impression que c'est ce qu'il voulait faire
je souhaite avoir une restitution par une commande type doc.write(a)
sous la forme 1 000,00 (séparateur des mille et deux chiffres après la virgule)
le doc m'a fait penser qu'il voulait transférer le résultat dans un fichier texte mais c'est sans doute une erreur de ma part.
je souhaite avoir une restitution par une commande type doc.write(a)
sous la forme 1 000,00 (séparateur des mille et deux chiffres après la virgule)
le doc m'a fait penser qu'il voulait transférer le résultat dans un fichier texte mais c'est sans doute une erreur de ma part.
jee pee
- Messages postés
- 31054
- Date d'inscription
- mercredi 2 mai 2007
- Statut
- Modérateur
- Dernière intervention
- 25 février 2021
Bonjour,
"par exemple "40,00" pour a et "12,30" pour b"la virgule en séparateur pour la conversion float ne vas passer
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
- Messages postés
- 15615
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
Ok, mais dans les langages de programmation en général (C, C++, Basic, Java, Tcl, Python ...), c'est toujours un point décimal
culture ou pas culture ...
Mais bon, tu sais comment traiter le problème maintenant ...
culture ou pas culture ...
Mais bon, tu sais comment traiter le problème maintenant ...
a = input("Combien vaut a ? ") a = float(a.replace(',','.'))
Whismeril
- Messages postés
- 15615
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Tu sites C++ et Basic, les versions .Net de ces langages prennent en compte la culture
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
- Messages postés
- 15615
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
Tu sites ..
Ah, tu veux dire tu cites ..
Ok, mais moi je ne table jamais là-dessus, je reste basique: séparateur = point ...
Ah, tu veux dire tu cites ..
Ok, mais moi je ne table jamais là-dessus, je reste basique: séparateur = point ...
Whismeril
- Messages postés
- 15615
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Tu peux charier mon auretografe si tu veux, je reconnais faire régulièrement de fautes.
Mais y'a bien pire que moi sur les forums ;)
Mais y'a bien pire que moi sur les forums ;)
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Ah ça, c'est sur !
En fait, si c'est vraiment ça qu'il entre, tout vient de là !
En fait, si c'est vraiment ça qu'il entre, tout vient de là !
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
A y'est, ça marche !
Je vous propose ce petit programme qui calcule la mensualité d'un prêt avec ou sans différé, à partir du montant du prêt, de son taux et de sa durée.
(cliquer sur le lien en bas de page pour avoir les indentations correctes)
import locale
locale.setlocale(locale.LC_ALL, '')
montantcrédit= float(input("Quel est le montant du prêt ? "))
tauxcrédit= float(input("Quel est le taux d'intérêt ? "))
duréecrédit=int(input("Quelle est la durée du crédit en mois ? "))
intérêtmensuel=(montantcrédit*(tauxcrédit/100)/12)
intérêtannuel=(montantcrédit*(tauxcrédit/100))
présencedifféré= input("Y a-t-il un différé ? ")
if présencedifféré=="o":
typedifféré=input("le différé est-il partiel ou total (p/t) ? ")
duréedifféré=int(input("Merci d'indiquer la durée du différé "))
duréecrédit=int(duréecrédit)-int(duréedifféré)
if typedifféré =="p":
print("\n\nla mensualité du différé partiel est de " + ("{:,.2f}".format(intérêtmensuel).replace(',', ' ').replace('.', ',')) + " euros durant " + str(duréedifféré) + " mois")
elif typedifféré == "t":
indexdifféré=int((duréedifféré)/12)
for i in range (1, indexdifféré + 1):
intérêtannuel = (montantcrédit * (tauxcrédit / 100))
montantcrédit=montantcrédit + intérêtannuel
print("\n\ndifféré total durant " + str(duréedifféré) + " mois")
mensualitéamortissement= ((montantcrédit * (tauxcrédit/100))/12)/(1-(1+((tauxcrédit/100)/12)) **-(duréecrédit))
print("La mensualité d'amortissement est de " + ("{:,.2f}".format(mensualitéamortissement).replace(',', ' ').replace('.', ',')) + " euros durant " + str(duréecrédit) + " mois")
https://www.zupimages.net/up/21/08/zark.png
Je vous propose ce petit programme qui calcule la mensualité d'un prêt avec ou sans différé, à partir du montant du prêt, de son taux et de sa durée.
(cliquer sur le lien en bas de page pour avoir les indentations correctes)
import locale
locale.setlocale(locale.LC_ALL, '')
montantcrédit= float(input("Quel est le montant du prêt ? "))
tauxcrédit= float(input("Quel est le taux d'intérêt ? "))
duréecrédit=int(input("Quelle est la durée du crédit en mois ? "))
intérêtmensuel=(montantcrédit*(tauxcrédit/100)/12)
intérêtannuel=(montantcrédit*(tauxcrédit/100))
présencedifféré= input("Y a-t-il un différé ? ")
if présencedifféré=="o":
typedifféré=input("le différé est-il partiel ou total (p/t) ? ")
duréedifféré=int(input("Merci d'indiquer la durée du différé "))
duréecrédit=int(duréecrédit)-int(duréedifféré)
if typedifféré =="p":
print("\n\nla mensualité du différé partiel est de " + ("{:,.2f}".format(intérêtmensuel).replace(',', ' ').replace('.', ',')) + " euros durant " + str(duréedifféré) + " mois")
elif typedifféré == "t":
indexdifféré=int((duréedifféré)/12)
for i in range (1, indexdifféré + 1):
intérêtannuel = (montantcrédit * (tauxcrédit / 100))
montantcrédit=montantcrédit + intérêtannuel
print("\n\ndifféré total durant " + str(duréedifféré) + " mois")
mensualitéamortissement= ((montantcrédit * (tauxcrédit/100))/12)/(1-(1+((tauxcrédit/100)/12)) **-(duréecrédit))
print("La mensualité d'amortissement est de " + ("{:,.2f}".format(mensualitéamortissement).replace(',', ' ').replace('.', ',')) + " euros durant " + str(duréecrédit) + " mois")
https://www.zupimages.net/up/21/08/zark.png
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
- Messages postés
- 15615
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Contributeur
- Dernière intervention
- 25 février 2021
Désolé, en plus d'être un noob, je suis un boulet !!!
J'ai corrigé.
J'ai corrigé.
jee pee
- Messages postés
- 31054
- Date d'inscription
- mercredi 2 mai 2007
- Statut
- Modérateur
- Dernière intervention
- 25 février 2021
Tu as oublié les balises code du forum.
Zut, à la seconde ligne ça plante :
tu n'as pas réglé la saisie de la virgule
Zut, à la seconde ligne ça plante :
Quel est le taux d'intérêt ? 1,25
Traceback (most recent call last):
File "D:\Dev\Python\Exe\ccm\interet.py", line 5, in <module>
tauxcrédit= float(input("Quel est le taux d'intérêt ? "))
ValueError: could not convert string to float: '1,25'
tu n'as pas réglé la saisie de la virgule
jee pee
- Messages postés
- 31054
- Date d'inscription
- mercredi 2 mai 2007
- Statut
- Modérateur
- Dernière intervention
- 25 février 2021
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
tu mets des accents dans les noms de variables, une virgule dans l'affichage du montant du remboursement, mais la virgule ne fonctionne pas dans la saisie, ce n'est pas cohérent ;-)))
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
- Messages postés
- 31054
- Date d'inscription
- mercredi 2 mai 2007
- Statut
- Modérateur
- Dernière intervention
- 25 février 2021
Ce n'est pas si important pour moi. Ma problématique résidait surtout dans la restitution des nombres. Je dirais même que l'utilisation du point situé dans le pavé numérique facilite la saisie des nombres.
Apparemment, comme le dit Phil, c'est une question culturelle.
Merci à tous en tous cas et à la prochaine.
Apparemment, comme le dit Phil, c'est une question culturelle.
Merci à tous en tous cas et à la prochaine.
Phil_1857
- Messages postés
- 939
- Date d'inscription
- lundi 23 mars 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
Oui mais quand même, Phil il dit aussi que les accents dans les noms de variables, c'est plutôt vilain
Et pour tes saisies tu aurais pu faire ça:
etc ..
Et pour tes saisies tu aurais pu faire ça:
def get_float(s): if(',' in s): s = s.replace(',','.') return(float(s)) montant_credit = get_float(input('Quel est le montant du prêt ? : '))
etc ..
jipi10
- Messages postés
- 18
- Date d'inscription
- samedi 15 août 2020
- Statut
- Membre
- Dernière intervention
- 25 février 2021
import locale locale.setlocale(locale.LC_ALL, '') montantcrédit= float(input("Quel est le montant du prêt ? ")) tauxcrédit= float(input("Quel est le taux d'intérêt ? ")) duréecrédit=int(input("Quelle est la durée du crédit en mois ? ")) intérêtmensuel=(montantcrédit*(tauxcrédit/100)/12) intérêtannuel=(montantcrédit*(tauxcrédit/100)) présencedifféré= input("Y a-t-il un différé ? ") if présencedifféré=="o": typedifféré=input("le différé est-il partiel ou total (p/t) ? ") duréedifféré=int(input("Merci d'indiquer la durée du différé ")) duréecrédit=int(duréecrédit)-int(duréedifféré) if typedifféré =="p": print("\n\nla mensualité du différé partiel est de " + ("{:,.2f}".format(intérêtmensuel).replace(',', ' ').replace('.', ',')) + " euros durant " + str(duréedifféré) + " mois") elif typedifféré == "t": indexdifféré=int((duréedifféré)/12) for i in range (1, indexdifféré + 1): intérêtannuel = (montantcrédit * (tauxcrédit / 100)) montantcrédit=montantcrédit + intérêtannuel print("\n\ndifféré total durant " + str(duréedifféré) + " mois") mensualitéamortissement= ((montantcrédit * (tauxcrédit/100))/12)/(1-(1+((tauxcrédit/100)/12)) **-(duréecrédit)) print("La mensualité d'amortissement est de " + ("{:,.2f}".format(mensualitéamortissement).replace(',', ' ').replace('.', ',')) + " euros durant " + str(duréecrédit) + " mois")