Python: TypeError - не все аргументы конвертируются при форматировании строки

python

839 просмотра

1 ответ

Я пишу базовый скрипт на Python, код которого следующий: def is_prime (n):

def is_prime(n):
    i = 2
    while i<n:
        if(n%i == 0):
            return False
        i+=1
    return True

def truncable(num):
    li = []
    x = str(num)
    if(is_prime(num)):
        n = len(x)
        check = ""
        i = 1
        while(i<n):
            if(is_prime(x[i:])):
                check = "True"
            else:
                check = "False"
                break
        if(check == "True"):
            li.append(num)

print truncable(3797)   

Однако после запуска этого скрипта я получаю следующую ошибку:

TypeError: not all arguments converted during string formatting

Что не так с моим кодом?

Автор: Manas Chaturvedi Источник Размещён: 12.11.2019 09:04

Ответы (1)


6 плюса

Решение

Это происходит, когда nв выражении n%iесть строка, а не целое число. Вы сделали xстроку, а затем передали ее is_prime():

>>> is_prime('5')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in is_prime
TypeError: not all arguments converted during string formatting
>>> is_prime(5)
True

is_prime()Вместо этого передайте целые числа :

is_prime(int(x[i:]))

%Оператор в строке используется для операций форматирования строки .

Вы, кажется, забыли вернуть что-либо от truncable(); возможно, вы хотели добавить:

return li

в конце?

Автор: Martijn Pieters Размещён: 19.04.2014 03:45
Вопросы из категории :
32x32