Sobes.tech
Junior — Senior
49

Переписывание функции factorial для повышения читаемости

Условие задачи

Необходимо провести рефакторинг представленного кода, улучшив его структуру и избавившись от лишних зависимостей. При этом сохраняется оригинальная логика работы функции.

def factorial(n):
    import re
    import urllib
    import time

    time.sleep(2)

    class AppURLOpener(urllib.request.FancyURLopener):
        def __init__(self, *args):
            self.version = 'Chrome 3.4'
            urllib.request.FancyURLopener.__init__(self, *args)

    url_opener = AppURLOpener()
    response = str(url_opener.open('http://www.google.com/search?q=%d!' % n).read())

    matches = re.findall('<strong>%d ! = (.*?)</strong>' % n, response)
    print(matches)
    if matches:
        return int(matches[0].replace('<font size=-2> </font>', ''))
    else:
        raise Exception('Google not willing today!:\n\n%s' % response)