Python no todos los argumentos se convierten durante el formateo de cadenas

Funciones y métodos de Python

Python es estricto con las reglas. Una de las principales características del lenguaje Python te mantiene bajo control para que tus programas funcionen de la manera que deseas. Puede encontrar un error que diga & ldquo; no todos los argumentos convertidos durante el formateo de cadenas & rdquo; cuando está trabajando con cadenas.

En esta guía, hablamos sobre este error y por qué aparece. Analizamos dos escenarios comunes en los que se genera este error para ayudarlo a resolverlo en su código.

¡Sin más preámbulos, comencemos!




El problema: typeerror : no todos los argumentos se convierten durante el formateo de cadenas

Un TypeError es un tipo de error que nos dice que estamos realizando una tarea que no se puede ejecutar en un valor de cierto tipo. En este caso, nuestro error de tipo se relaciona con un valor de cadena.

Python ofrece varias formas de formatear cadenas . Esto le permite insertar valores en cadenas o concatenar valores al final de una cadena.

Dos de las formas más comunes de formatear Las cadenas son:

  • Usando el operador% (estilo antiguo)
  • Usando el operador {} con la función .format ()

Cuando intentas usar ambas sintaxis juntas, se genera un error.




Ejemplo: Mezcla de reglas de formato de cadenas

Vamos a escribir una programa que calcula un aumento del 5% en el precio de un producto vendido en una panadería.

El 81% de los participantes afirmó que se sentía más seguro acerca de sus perspectivas laborales después de asistir a un bootcamp. Asómate a un bootcamp hoy mismo.

El graduado promedio de un bootcamp pasó menos de seis meses en la transición de carrera, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Comenzamos recopilando dos piezas. de información del usuario: el nombre del producto y el precio del producto. Hacemos esto usando una declaración input () :

 name = input ("Ingrese el nombre del producto:") price = input ("Ingrese el precio del producto:") 

A continuación, calculamos el nuevo precio del producto multiplicando el valor de & ldquo; precio & rdquo; por 1.05. Esto representa un aumento de precio del 5%:

 aumento = round (float (precio) * 1.05, 2) 

Redondeamos el valor de & ldquo; aumentar & rdquo; a dos decimales usando una instrucción round () . Finalmente, use el formato de cadena para imprimir el nuevo precio del producto en la consola:

 print ("El el nuevo precio de {} es $ {}. "% name, str (aumento)) 

Este código agrega los valores de & ldquo; name & rdquo; y & ldquo; aumentar & rdquo; en nuestra cadena. Convertimos & ldquo; aumentamos & rdquo; a una cadena para fusionarla en nuestra cadena. Antes de convertir el valor, & ldquo; aumentar & rdquo; es un número de coma flotante. Ejecute nuestro código y vea qué sucede:

 Traceback (última llamada más reciente): Archivo "main.py" , línea 6, en & lt; módulo & gt; print ("El nuevo precio de {} es {}"% name, str (discount)) TypeError: no todos los argumentos se convierten durante el formateo de cadenas 

Parece que hay un error en el último línea de nuestro código.


El problema es que mezclamos nuestra sintaxis de formato de cadena. Usamos los operadores {} y%. Estos se utilizan para dos tipos diferentes de formato de cadena.

Para resolver este problema, reemplazamos la última línea de nuestra programación con cualquiera de las dos siguientes líneas de código:

La primera línea de código usa la sintaxis .format () . Esto reemplaza los valores de {} con los valores de la instrucción .format () en el orden en que se especifican.

La segunda línea de código usa el antiguo estilo% técnica de formato de cadena. Los valores & ldquo;% s & rdquo; se reemplazan por los que están entre paréntesis después del operador%.

Ejecutemos nuestro código nuevamente y veamos qué sucede:

 Ingrese el nombre del producto: Babka Ingrese el precio del producto: 2 .50 El nuevo precio de Babka es $ 2.62. 

Nuestro código agregó con éxito nuestros argumentos en nuestra cadena.




Ejemplo: Confundir el operador de módulo

Python usa el signo de porcentaje (%) para calcular números de módulo y formato de cadena. Los números de módulo son el resto que queda después de una suma de división.

Si usa el signo de porcentaje en una cadena, se usa para formatear; si usa el signo de porcentaje en un número, se usa para calcular el módulo. Por lo tanto, si un valor tiene el formato de una cadena en la que desea realizar un cálculo de módulo, se genera un error.

Eche un vistazo a un programa que calcula si un número es par o impar. :

 número = entrada ("Introduzca un número:") mod_calc = número% 2 si mod_calc == 0: print ("Este número es par.") Else: print ("Este número es impar.") 

Primero, le pedimos al usuario que ingrese un número. Luego usamos el operador de módulo para calcular el resto que se devuelve cuando & ldquo; número & rdquo; se divide por 2.


Si el valor devuelto por el operador de módulo es igual a 0, el contenido de nuestra instrucción if se ejecuta. De lo contrario, el contenido del else se ejecuta la declaración.

Ejecutemos nuestro código:

 Introduzca un número: 7 Traceback (última llamada más reciente): archivo "main.py", línea 2, en & lt; módulo & gt; mod_calc = número% 2 TypeError: no todos los argumentos se convierten durante el formateo de cadenas 

Otro TypeError. Este error se genera porque & ldquo; number & rdquo; es una cadena. El método input () devuelve una cadena. Necesitamos convertir & ldquo; number & rdquo; en un punto flotante o un número entero si queremos realizar un cálculo de módulo.

"Career Karma entró en mi vida cuando más lo necesitaba y rápidamente me ayudó a combinar con un bootcamp. ¡Dos meses después de graduarme, encontré el trabajo de mis sueños que se alineaba con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

Podemos convertir & ldquo; número & rdquo; en un flotante usando la función float ():

 mod_calc = float (número)% 2 

Intentemos ejecutar nuestro código nuevamente:

 Por favor ingrese un número: 7 Este número es impar. 

¡Nuestro código funciona!




Conclusión

El & ldquo; not todos los argumentos convertidos durante el formato de cadena & rdquo; se genera un error cuando Python no agrega todos los argumentos a una operación de formato de cadena. Esto sucede si mezcla la sintaxis de formato de cadena o si intenta realizar una operación de módulo en una cadena.

Ahora está listo para resolver este error común de Python como un p ingeniero de software profesional !





Python no todos los argumentos se convierten durante el formateo de cadenas: StackOverflow Questions

Tutorials