读取 json 个数据条目作为 python 文件中的对象
Read json data entries as objects in python file
我想在 python 中使用 SOLID 原则解决 fizzbuzz 问题
我写了这段代码:
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")
他们说:规则应该是对象,这样我就可以 add/register 将它们动态地或通过依赖注入 add/register 给规则执行器
我想到 JSON 文件来存储所有规则并将它们作为 .py 文件中的对象读取,但我卡住了。
有什么帮助吗?
我终于找到了解决方案,它是:
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))
我想在 python 中使用 SOLID 原则解决 fizzbuzz 问题 我写了这段代码:
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")
他们说:规则应该是对象,这样我就可以 add/register 将它们动态地或通过依赖注入 add/register 给规则执行器 我想到 JSON 文件来存储所有规则并将它们作为 .py 文件中的对象读取,但我卡住了。
有什么帮助吗?
我终于找到了解决方案,它是:
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))