Найти - Пользователи
Полная версия: НОД для нескольких чисел
Начало » Python для новичков » НОД для нескольких чисел
1
r2d2
Питон увидел 7 минут назад.
x = gcd_recur (spisok[0], spisok[1])
return a if b == 0 else gcd_recur (b, a % b)
TypeError: not all arguments converted during string formatting

Ошибка в операции остатка от деления над списком?

def input_ ():
    spisok = list (raw_input('Введите числа: '))
    return spisok
def count (l):
    return  len (l)
  
def gcd_recur (a, b):
    return a if b == 0 else gcd_recur (b, a % b)
spisok = input_ ()
quantity = count (spisok)
def Nod (spisok, quantity):
    x = gcd_recur (spisok[0], spisok[1])
    element = 2
    for element in quantity:
        x = gcd_recur(x,spisok[element])
    element +=1  
    return x   
Nod (spisok, quantity)

Юзай теги
[code python][/code]
FishHook
Подозреваю, что а - строка. Вы ведь нигде не преобразуете введенное число в собственно число.
#Это строка
raw_input('Введите числа: ')
#Это число
int(raw_input('Введите числа: '))
А символ процента примененный к строке означает подстановку параметров в форматированную строку, о чем Вам и сообщает ошибка.
r2d2
Как тогда сделать spisok массивом элементов int, чтобы потом над ними можно было произвести операцию остатка от деления.
Если вот так
spisok = list (raw_input('Введите числа: '))
spisok = int(spisok)

ошибка

int() argument must be a string or a number, not 'list'
sanodin
spisok = list (raw_input('Введите числа: '))
for i in spisok:
    print type(i)
    i=int(i)
FishHook
r2d2
Как тогда сделать spisok массивом элементов int, чтобы потом над ними можно было произвести операцию остатка от деления.
В любом учебнике по питону это есть на первых десяти страницах после оглавления
l=["1","2","3"]
l=map(int,l)

Я так понимаю, что Вам нужен список цифр, а двузначные числа не участвуют?
r2d2
Пока без двухзначных бы разобраться.
В функцию список поступает правильно, но всё равно почему то выводится ошибка
return a if b == 0 else (b, a % b)
TypeError: not all arguments converted during string formatting
Что, я так понимаю, значит, что не все элементы преобразованы к типу str, что естественно, когда они все int. Почему он их хочет преобразовать в str?
Введите числа: 123
<type 'int'>
<type 'int'>
<type 'int'>
['1', '2', '3'] 3
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB