Форум сайта python.su
0
Спасибо огромное )
Офлайн
0
terabaytОн должен найти максимальное число, которое получается перемножением двух трехзначных чисел и которое одинаково читается с начала и с конца (например 45654)
а что он должен делать? где условие? или мы сами должны угадать
ivsatelНе выходит(
AspergoНе разбирался, но попробуй так:
a=[] b=[] for x in range(1,1000): for y in range(1,1000): z=x*y a.append(str(z)) for i in a: if i[:]==i[::-1]: b.append(int(i)) print max(b), '--->', 'MAX'
Отредактировано Aspergo (Март 25, 2015 18:08:09)
Офлайн
568
Aspergo,
Компьютер никто не спрашивает, хочет он работать или нет, а вот если вас заставить вручную считать и на бумажке записывать, то вы наверняка (по крайней мере я надеюсь на это) постарались бы оптимизировать процесс. В вашем коде ОЧЕНЬ много лишних операций. Например, вы ведь можете сразу определять, является ли произведение x * y полиндромом. Зачем вы сохраняете в списке заведомо неправильные результаты?
Офлайн
103
Aspergo
Он должен найти максимальное число, которое получается перемножением двух трехзначных чисел и которое одинаково читается с начала и с конца (например 45654)
m = 0 for x in range(1000, 1, -1): for y in range(1000, 1, -1): z = x * y if str(z) == str(z)[::-1] and m < z: m = z if m >= (x-1)**2: break print(m)
Офлайн
568
terabayt
весь воспитательный процесс испортил 
Офлайн
103
FishHook мы играем в злого и хорошего программера! это даже лучше! ))
Офлайн
0
Спасибо за ответы! Ошибки понятны.
А что значит это условие?
if m >= (x-1)**2:
for x in p: if len(x)%2==0: for i in range(0, (len(x)/2)): if x[i]==x[-i-1]: e.append(int(x)) elif len(x)%2!=0: for i in range(0, len(x)-1/2): if x[i]==x[-i-1]: e.append(int(x)) print max(e)
Офлайн
103
Aspergo
Ошибки понятны.
Aspergoи что же вы поняли? вот именно эта строчка и сократила как минимум в 5 раз время
А что значит это условие?
Aspergo1) вот, при этом условии в список будет добавлятся если равны первый и последний символы
И, возможно, в первоначальном коде, в самих условиях проверки, есть бросающиеся в глаза ошибки, которые приводят к тому, что абсолютно несимметричные числа попадают в список?
if x[i]==x[-i-1]
len(x)-1/2
>>> a = 'qwerty' >>> len(a)-1/2 6 >>> len(a) 6 >>> (len(a)-1)/2 2
p=[] e=[] for z in range(1,1000): for k in range(1,1000): r=z*k p.append(str(r)) for x in p: for i in range(len(x)/2): if x[i]!=x[-i-1]: break else: e.append(int(x)) print max(e)
Отредактировано terabayt (Март 26, 2015 00:35:48)
Офлайн