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
python
python-3.x
slamg_Luke
fuente
fuente
%
es un operador de formato con una cadena en el lado izquierdo. Convierte a entero como lo sugieren otros comentarios.Respuestas:
La
input
función en python devuelve una cadena. Si necesita números enteros (aquí lo hace para calcular el mod), deberá convertir el valor de retorno deinput
int conint(input("..."))
fuente
%
es en realidad un operador de formateo de cadenas, yaitem
que en realidad es una cadena, así que use:fuente