Python 3 TypeError: no todos los argumentos se convierten durante el formateo de cadenas, se enumera

0

Se supone que este programa hecho en python 3.72 recibe una lista de números del usuario y luego imprime cuatro listas diferentes con los números que son múltiplos de 2, 3, 5 y 7.

num_input = ""
num_list = []
while num_input != "ESC":
    if num_input.isdigit():
        print("Number added")
        num_list.append(num_input)
    num_input = input("Enter a number list [Type ESC to end list]: ")

num_list_2 = []
num_list_3 = []
num_list_5 = []
num_list_7 = []

for item in num_list:
    if item % 2 == 0:
        num_list_2.append(item)
    if item % 3 == 0:
        num_list_3.append(item)
    if item % 5 == 0:
        num_list_5.append(item)
    if item % 7 == 0:
        num_list_7.append(item)

print(num_list_2)
print(num_list_3)
print(num_list_5)
print(num_list_7)

cuando ejecuté el código funcionó bien hasta que escribí "ESC" para finalizar la lista y mostró esto:

Traceback (most recent call last):
  File "test.py", line 17, in 
<module>
    if item % 2 == 0:
TypeError: not all arguments converted during string formatting
slamg_Luke
fuente
Su lista consta de cadenas, no de números. Arregle la llamada append () de la siguiente manera: num_list.append (int (num_input))
rg_software
%es un operador de formato con una cadena en el lado izquierdo. Convierte a entero como lo sugieren otros comentarios.
Gahooa

Respuestas:

0

La inputfunción en python devuelve una cadena. Si necesita números enteros (aquí lo hace para calcular el mod), deberá convertir el valor de retorno de inputint conint(input("..."))

WayToDoor
fuente
0

%es en realidad un operador de formateo de cadenas, ya itemque en realidad es una cadena, así que use:

num_input = ""

num_list = []
while num_input != "ESC":
    if num_input.isdigit():
        print("Number added")
        num_list.append(int(num_input))
    num_input = input("Enter a number list [Type ESC to end list]: ")

num_list_2 = []
num_list_3 = []
num_list_5 = []
num_list_7 = []

for item in num_list:
    if item % 2 == 0:
        num_list_2.append(item)
    if item % 3 == 0:
        num_list_3.append(item)
    if item % 5 == 0:
        num_list_5.append(item)
    if item % 7 == 0:
        num_list_7.append(item)

print(num_list_2)
print(num_list_3)
print(num_list_5)
print(num_list_7)
U10-Adelante
fuente