Чтение записей данных JSON как объектов в файле Python - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу решить проблему fizzbuzz, используя принципы SOLID в python Я написал этот код:

class tester(object):
    def check(self, number, string):
        return ", ".join(self.check_numbers(number, string))

    def check_numbers(self, number, string):
        number_list = []
        for n in range (1, 101):
            if n%number==0:
                number_list.append(string)
            else:
                number_list.append(str(n))
        return number_list

Работает хорошо. Когда я запускаю код, я создаю объект с помощью: em = tester(), а затем вызываю функцию проверки, например: em.check(3, "Fizz")

Они говорят: правила должны быть объектами, чтобы я мог добавлять / регистрировать их в исполнителе правил динамически или с помощью внедрения зависимостей Я думал о файле JSON для хранения всех правил и чтения их как объектов в файле .py, но я застрял.

Есть ли помощь?

1 Ответ

0 голосов
/ 03 мая 2019

У меня наконец есть решение, и вот оно:

from collections import namedtuple

def is_divisible(number, modulo):
   return number % modulo == 0

FizzBuzz = namedtuple('FizzBuzz', 'number, name')

fizz_buzz_words = [
    FizzBuzz( 3, 'Fizz'),
    FizzBuzz( 4, 'Buzz'),
    FizzBuzz( 7, 'Bang'),
    FizzBuzz(11, 'Boom'),
 ]

def to_fizz_buzz_string(n):
    fizz_buzzes = [fb.name for fb in fizz_buzz_words if is_divisible(n, 
    fb.number)]

    return ''.join(fizz_buzzes) if fizz_buzzes else str(n)

for a in range(124, 134):
    print to_fizz_buzz_string(a)

print ', '.join(to_fizz_buzz_string(n) for n in range(923, 935))
...