Проблема Эйлера Эйлера № 4
n = 0 for a in xrange(999, 100, -1): for b in xrange(a, 100, -1): x = a * b if x > n: s = str(a * b) if s == s[::-1]: n = a * b print n
У меня есть вопрос об этом решении проблемы . Я знаю, что это правильно, но мне интересно, почему в xrange(999,100,-1)
-1
есть для a и b для циклов. Пожалуйста, объясни. Я новичок в этом 🙂
- Реализация __getitem__
- String заменить python
- Ошибка при использовании gzip self._read (readsize) с некоторыми более крупными файлами 220 мегабайт
- Имеет ли значение порядка импорта Python
- Каков порядок отображения различных форм присвоений в вызове функции python?
Третий параметр xrange()
– это значение приращения. Значение по умолчанию равно 1, что означает, что счетчик будет подсчитываться в возрастающем направлении. Чтобы подсчитать в уменьшающемся направлении, используйте -1. Ваш счетчик будет идти от 999 до 101 (итератор xrange()
останавливается как раз перед тем, как он достигнет второго значения параметра).
Для справок в будущем см. Документацию xrange()
.
Параметр -1 указывает отрицательный шаг. Таким образом, переход от 999 до 100 (исключая).
Функция xrange
принимает три аргумента: start
, stop
и step
. Он возвращает диапазон чисел, начиная с start
продолжая stop
, но не включая его. Если «старт» больше, чем stop
, должен быть предоставлен отрицательный шаг.
Таким образом, в основном xrange(999, 100, -1)
даст вам [999, 998, ..., 101]
Это означает, что вы уменьшаете (следовательно, отрицательный знак) с шагом 1, от 999 до 100
Это то, что я получил для проекта Эйлера №4:
def Palindrome(s): if s == s[::-1]: return True else: return False i = 100 j = 100 greatest = 0 while (i <= 999): while (j <= 999): product = i * j if (product > greatest and Palindrome(str(product))): greatest = product j += 1 j = 100 i += 1 print "Answer: " + str(greatest)
-M1K3
Мое решение Python:
container = [] for i in range(100, 999): for j in range(100, 999): num = i * j if str(num) == str(num)[::-1]: container.append(num) print(max(container))
Отрицательным является модификатор. В основном петли начинаются с 999, заканчиваются на 100, и добираются туда, изменяя каждое число отрицательным.
for x in range(100, 1000): for y in range(100, 1000): product = x*y if product > x*y: break if str(product) == str(product)[::-1] and product > 900000: print (x, y, product)
- Передача функций self в класс в Python
- Почему ссылки на методы экземпляра хранятся в каждом экземпляре объекта, а не в объекте класса?
- Попытка понять вложенные циклы, идентификационную матрицу
- Простой способ добавить несколько элементов списка?
- `" … ".format (** ctx)`, который пропускает неизвестные ключи?
- деревья исходного кода: широкие или глубокие
- Функции Python вызывают по ссылке
- Тайм-аут рабочих Gunicorn независимо от того, что
- Помощь в домашнем задании Python
- Что делает s.strip () точно?
- Как преобразовать хэш SHA256 из целого в строку и обратно?