Изменение функции main

from collections import Counter


def sleight_of_hand(k2, matrix):
    c = Counter(int(x) for row in matrix for x in row if x != ".")
    return sum(x <= k2 for x in c.values())


def main():
    k2 = 2 * int(input())
    matrix = (input() for _ in range(4))
    result = sleight_of_hand(k2, matrix)
    print(result)


if __name__ == "__main__":

    main()

Мне сказали, что def main() - лишняя промежуточная функция, и код можно сразу написать под if __name__ == '__main__' Но если я его пишу после if __name__ == '__main__' код перестает работать. Как исправить ошибку?


Ответы (1 шт):

Автор решения: Сергей

Вот вам перенесенный код, ещё и под PEP-8 исправленный. Так как вы свой переделанный не привели, то ошибку не укажу. Сравнивайте и смотрите, что у вас не так было.

И @eri и @Stanislav Volodarskiy правы, первый код лучше, если не учитель так потребовал, то лучше не менять.

from collections import Counter


def sleight_of_hand(k2, matrix):
    c = Counter(int(x) for row in matrix for x in row if x != ".")
    return sum(x <= k2 for x in c.values())


if __name__ == "__main__":
    k2 = 2 * int(input())
    matrix = (input() for _ in range(4))
    result = sleight_of_hand(k2, matrix)
    print(result)
→ Ссылка