Python 3 TypeError: non tutti gli argomenti convertiti durante la formattazione delle stringhe, elenca il problema


0

Questo programma fatto in python 3.72 dovrebbe ricevere una lista di numeri da parte dell'utente e quindi stampare quattro liste diverse con i numeri che sono multipli di 2, 3, 5 e 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)

quando ho eseguito il codice è andato bene fino a quando ho scritto "ESC" per terminare la lista e questo ha mostrato questo:

Traceback (most recent call last):
  File "test.py", line 17, in 
<module>
    if item % 2 == 0:
TypeError: not all arguments converted during string formatting

La tua lista consiste di stringhe, non di numeri. Risolvi chiamata append () come segue: num_list.append (int (num_input))
rg_software

% è un operatore di formattazione con una stringa sul lato sinistro. Converti in numero intero come suggerito da altri commenti.
gahooa

Risposte:


0

Il input la funzione in python restituisce una stringa. Se hai bisogno di numeri interi (qui lo fai per calcolare la mod), dovrai lanciare il valore di ritorno di input a int con int(input("..."))


0

% è in realtà un operatore di formattazione di stringhe, dal momento che item è in realtà una stringa, quindi usa:

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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.