Форум сайта python.su
def isprime(n):
for x in range(2, int(n**0.5)+1):
if n % x == 0:
return False
return True
def checkio(nbr):
nbr=str(nbr)
centr=len(nbr)//2
if len(nbr)%2:
a,b,c=int(nbr[0:centr]),int(nbr[centr]),int(nbr[len(nbr):centr:-1])
if c>=a:
b=b+1
if b==10:
b=str()
a=str(a+1)
else:
a=str(a)
c=str(str(a)[::-1])
else:
a=str(a)
b=str(b)
c=str(str(a)[::-1])
result = int(a+b+c)
else:
d,e=int(nbr[0:centr]),int(nbr[len(nbr):centr-1:-1])
if e>=d:
d=str(d+1)
if not int(d)%10:
x=d[0:len(d)-1]
else: x=d
e=str(str(x)[::-1])
else:
d=str(d)
e=str(str(d)[::-1])
result = int(d+e)
## t
if not isprime(result):
checkio(result)
else:
print(result)
return result
print(checkio(44))
Офлайн
Так рекурсия же у вас, return возвращает не из всех функций а только из текущей. Понаставляйте побольше принтов, что бы понять как же ваш код работает, либо можно вызвать исключение и отловить его на самом верху…
Офлайн
Может так?..
def checkio(nbr):
# ...
if not isprime(result):
result = checkio(result)
print(result)
return result
Отредактировано (Дек. 15, 2011 03:49:20)
Офлайн
sp3
Я дебугером проверил перед самым завершение переменная result имеет правильно значение 101, но в итоге выдает None. Вы имеете ввиду что return нельзя пользоваться при рекурсиях - “return возвращает не из всех функций а только из текущей.”
bw
так не прошло
Офлайн