Je m'entraîne sur mes déclarations de format, mais je ne comprends pas très bien comment cela fonctionne. J'essaye spécifiquement de comprendre la commande de format en utilisant la commande ".2f" c'est le code que j'ai actuellement, la deuxième ligne s'exécute avant qu'elle ne retourne et l'erreur:
//Sample run: Enter the sales amount: 1234 The sales amount is $ 1,234.00 The sales tax is $ 98.72 The total sale is $ 1,332.72 Run complete. Press the Enter key to exit
J'essaye de faire un script, qui affiche la sortie de l'exemple d'exécution suivant:
salesTax = 0.08
salesAmount = str(input('Enter the sales amount: '))
print ('The sales amount is', format('$'+salesAmount,
'.2f'))
print ('The sales tax is', format("$"+'.2f'))
print('The total sale is', format("$"+totalSales*salesTax,
'.2f'))
input("\nRun complete. Press the Enter key to exit.")
4 Réponses :
.2f doit être en dehors de la méthode de format.
par exemple, essayez print("{:.2f}".format(12.345678))
Ce n'est pas correct. Il n'utilise pas la méthode format mais la fonction format qui attend 2 arguments et est destinée à un seul élément
TL;DR
'The sales amount is $' + the_formatted_number
Décomposition:
Convertit le nombre en chaîne au format 2 décimales (partie .2 ) avec représentation en virgule flottante (partie f ).
format(salesAmount, '.2f')
Maintenant que vous avez une chaîne, vous la joignez soit avec pass to print, soit vous pouvez rejoindre au code précédent avec + ou autre.
print('The sales amount is $', format(salesAmount, '.2f'))
Merci beaucoup, cela a été très utile, je sais que c'est un concept facile, mais je ne pouvais tout simplement pas me taper la tête pour une raison quelconque.
format est un format -in fonction qui prend deux arguments: valeur et format_spec .
format ('$' + salesAmount, '.2f') Vous donnera une erreur car il attend un nombre ou une représentation sous forme de chaîne d'un nombre comme valeur pour appliquer le format que vous avez fourni. Vous obtiendrez une erreur:
ValueError: Code de format inconnu 'f' pour l'objet de type 'str'
format (salesAmount, '.2f') Cela fonctionnera correctement.
Remarque: strong > Si vous utilisez Python 3.6+, vous pouvez également utiliser une f-string:
f"{12.345678:.2f}"
Bien que cela fonctionne, vous n’expliquez pas le fonctionnement de la fonction format, ce qui a été demandé
@lmiguelvargasf merci pour votre clarification, je garderai cela à l'esprit lors de l'utilisation de la commande format.
La syntaxe est
print("The sales amount is ${.2f}".format(salesAmount))
Lorsque vous utilisez un format .2f , la valeur doit être un float , pas une chaîne, vous devez donc convertir l'entrée en float ( input () renvoie une chaîne, il n'est pas nécessaire d'utiliser str () sur le résultat. Et vous ne pouvez pas concaténer $ à la valeur avant de la formater, vous devez concaténer cela au résultat.
Vous avez également utilisé une variable totalSales code inexistante > dans vos appels print () , il devrait s'agir de salesAmount.
salesTax = 0.08
salesAmount = float(input('Enter the sales amount: '))
print ('The sales amount is', '$' + format(salesAmount, '.2f'))
print ('The sales tax is', '$' + format(salesTax*salesAmount, '.2f'))
print('The total sale is', '$' + format(salesAmount + salesAmount*salesTax, '.2f'))
input("\nRun complete. Press the Enter key to exit.")
Cela dit, cette utilisation du format () n'est pas courante de nos jours. Il est plus facile d'utiliser une f-string ou str.format () , qui vous permet d'incorporer la spécification de format dans une chaîne avec le texte brut, et formatez plusieurs valeurs ensemble, par exemple
format(value, format_spec)
Wow merci pour la réponse étonnante et détaillée, je garderai cela à l'esprit et j'écrirai probablement un nouveau script pour m'entraîner avec le str.format () maintenant aussi.
La syntaxe est
"formatString" .format (valeur1, valeur2, valeur3, ...)programiz.com/python-programming/methods/string/format
Hmm, il y a aussi une fonction
format:format (value, format_string), mais elle n'est pas couramment utilisée.