Проверка на наличие нескольких смежных эквивалентных значений в списке - PullRequest
0 голосов
/ 07 ноября 2019

Я завершаю вызов кодовых войн и не понимаю некоторых очень кратких решений. Вы проверяете, есть ли три соседних эквивалентных значения в одном списке и два соседних эквивалентных значения того же номера в другом списке. то есть «12777456» (в форме списка) будет иметь три 7 подряд. Решение, которое я не понимаю, гласит:

def triple_double(num1, num2):
    for x in range(10):
        if str(x) * 3 in str(num1):
            if str(x) * 2 in str(num2):
                return 1
    return 0

Я не получаю str(x) * 3 in str(num1) часть. Это сокращение для чего-то и не уверен, что Google, чтобы выяснить, что это такое. Любое направление ценится спасибо! ссылка на кодовые войны:

кодовые войны

1 Ответ

1 голос
/ 07 ноября 2019

Иногда просто печатать вещи могут помочь вам понять, что происходит. См. Модификацию:

num1 = 1233345
num2 = 123345

for x in range(10):
    if str(x) * 3 in str(num1):
        print(str(x) * 3, "in", num1)
        if str(x) * 2 in str(num2):
            print(str(x) * 2, "in", num2)

Результат:

333 in 1233345
33 in 123345

Умножение строк на целые числа в Python вызывает повтор строки:

>>> "a" * 3
'aaa'
>>> "abc" * 3
'abcabcabc'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...