Python pas tous les arguments convertis lors du formatage de la chaîne

Python est à cheval sur les règles. L’une des principales caractéristiques du langage Python vous permet de contrôler afin que vos programmes fonctionnent comme vous le souhaitez. Vous pouvez rencontrer une erreur indiquant "tous les arguments ne sont pas convertis lors du formatage de la chaaîne‚" lorsque vous travaillez avec des chaaînes.

Dans ce guide, nous parlons de cette erreur et de la raison pour laquelle elle apparaaît. Nous passons en revue deux scénarios courants o√π cette erreur est générée pour vous aider à la résoudre dans votre code.

Sans plus tarder, commençons !

Le problème : erreur de type : tous les arguments ne sont pas convertis lors du formatage de la chaaîne

Une TypeError est un type d’erreur qui nous dit que nous effectuons une t√¢che qui ne peut pas être exécutée sur une valeur d’un certain type. Dans ce cas, notre erreur de type se rapporte à une valeur de chaaîne.

Python propose plusieurs façons de formater des chaaînes. Cela vous permet d’insérer des valeurs dans des chaaînes ou de concaténer des valeurs à la fin d’une chaaîne.

Deux des manières les plus courantes de formatage les chaaînes sont :

  • Utiliser l’opérateur % (ancien style)
  • Utiliser l’opérateur {} avec la fonction .format()

Lorsque vous essayez d’utiliser ces deux syntaxes ensemble, une erreur est générée.

Exemple : Mélange de règles de formatage de chaaîne

Écrivons un programme qui calcule une augmentation de prix de 5 % sur un produit vendu dans une boulangerie.

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Nous commençons par collecter deux pièces d’informations de la part de l’utilisateur : le nom du produit et le prix du produit. Pour ce faire, nous utilisons une instruction input() :

Ensuite, nous calculons le nouveau prix du produit en multipliant la valeur du "prix" par 1.05. Cela représente une augmentation de prix de 5 % :

Nous arrondissons la valeur de "augmenter‚" à deux décimales à l’aide d’une instruction round(). Enfin, utilisez le formatage de chaaîne pour imprimer le nouveau prix du produit sur la console :

Ce code ajoute les valeurs de "name‚" et "augmenter" dans notre chaaîne. Nous convertissons "augmentons" à une chaaîne pour la fusionner dans notre chaaîne. Avant de convertir la valeur, "augmenter" est un nombre à virgule flottante. Exécutez notre code et voyez ce qui se passe :

Il semble qu’il y ait une erreur sur le dernier ligne de notre code.

Le problème est que nous avons mélangé notre syntaxe de formatage de chaaîne. Nous avons utilisé les opérateurs {} et %. Ceux-ci sont utilisés pour deux types différents de formatage de chaaîne.

Pour résoudre ce problème, nous remplaçons la dernière ligne de notre programmation par l’une des deux lignes de code suivantes :

La première ligne de code utilise la syntaxe .format(). Cela remplace les valeurs de {} par les valeurs de l’instruction .format() dans l’ordre dans lequel elles sont spécifiées.

La deuxième ligne de code utilise l’ancien- technique de formatage de chaaîne de style %. Les valeurs "%s‚" sont remplacées par celles qui sont placées entre parenthèses après l’opérateur %.

Exécutons à nouveau notre code et voyons ce qui se passe :

Notre code a ajouté avec succès nos arguments dans notre chaaîne.

Exemple : confusion de l’opérateur modulo

Python utilise le signe de pourcentage (%) pour calculer les nombres modulo et le formatage des chaaînes. Les nombres modulo sont le reste après une somme de division.

Si vous utilisez le signe de pourcentage sur une chaaîne, il est utilisé pour le formatage ; si vous utilisez le signe pourcentage sur un nombre, il est utilisé pour calculer le modulo. Par conséquent, si une valeur est formatée sous la forme d’une chaaîne sur laquelle vous souhaitez effectuer un calcul modulo, une erreur est générée.

Regardez un programme qui calcule si un nombre est pair ou impair. :

Tout d’abord, nous demandons à l’utilisateur d’entrer un nombre. Nous utilisons ensuite l’opérateur modulo pour calculer le reste qui est renvoyé lorsque "nombre" est divisé par 2.

Si la valeur renvoyée par l’opérateur modulo est égale à 0, le contenu de notre instruction if s’exécute. Sinon, le contenu de else< L’instruction /code> s’exécute.

Exécutons notre code :

Autre TypeError. Cette erreur est générée car "nombre" est une chaaîne. La méthode input() renvoie une chaaîne. Nous devons convertir "nombre" en virgule flottante ou un nombre entier si nous voulons effectuer un calcul modulo.

"Career Karma est entré dans ma vie au moment o√π j’en avais le plus besoin et m’a rapidement aidé à correspondre à un bootcamp. Deux mois après avoir obtenu mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspondait à mes valeurs et à mes objectifs dans la vie !"

Venus, ingénieur logiciel chez Rockbot

Nous pouvons convertir "number" en float en utilisant la fonction float() :

Essayons d’exécuter à nouveau notre code :

Notre code fonctionne !

Conclusion

Le "pas Tous les arguments convertis pendant le formatage de la chaaîne" se produisent lorsque Python n’ajoute pas tous les arguments à une opération de formatage de chaaîne. Cela se produit si vous mélangez votre syntaxe de formatage de chaaîne ou si vous essayez d’effectuer une opération modulo sur une chaaîne.

Maintenant, vous êtes prêt à résoudre cette erreur Python courante comme un p ingénieur logiciel professionnel!