Если Вы действительно хотите запуститься в нижней части, тогда чертящей линию, самая основная операция. Компьютерная графика просто о заполнении пикселей на сетке (экран), таким образом, необходимо удаться, какие пиксели заполнить для получения строки, которая идет от (x0, y0) к (x1, y1).
Выезд алгоритм Bresenham для получения ощущения того, что включено.
You are sorting strings, not numbers. '101101' < '10201'
because '1' < '2'
. Change list.append(reversed)
to list.append(int(reversed))
and it will work (or use a different sorting function).
Sort is doing its job. If you intended to store integers in the list, take Lukáš advice. You can also tell sort how to sort, for example by making ints:
list.sort(key=int)
the key parameter takes a function that calculates an item to take the list object's place in all comparisons. An integer will compare numerically as you expect.
(By the way, list
is a really bad variable name, as you override the builtin list() type!)
Ваш список содержит строки, поэтому он сортирует их в алфавитном порядке - попробуйте преобразовать список в целые числа, а затем выполните сортировку.
Вы сортируете строки, а не числа. Строки сравниваются слева направо.
You have your numbers stored as strings, so python is sorting them accordingly. So: '101x' comes before '102x' (the same way that 'abcd' will come before 'az').
No, it is sorting properly, just that it is sorting lexographically and you want numeric sorting... so remove the "str()"
Оператор компаратора обрабатывает ваш ввод как строки, а не целые числа. При сравнении строк 2, поскольку 3-я буква лексически больше 1.
reversed = str (mult) [:: - 1]
Нет необходимости преобразовывать в int. mult уже является int, и, поскольку вы проверили, что это палиндром, он будет выглядеть так же, как перевернутый, поэтому просто:
list.append(mult)