このrubyのコードをpythonで書くと?
普段はRubyを使っています。Pythonの勉強を始めたのですが、早速躓いていたので教えて下さい。
class FizzBuzz
def self.fizz?(i)
i > 0 && (i % 3) == 0
end
def self.buzz?(i)
i > 0 && (i % 5) == 0
end
def self.fizz_buzz?(i)
fizz?(i) && buzz?(i)
end
def self.to_p(i)
case
when fizz?(i) && !fizz_buzz?(i)
'Fizz'
when buzz?(i) && !fizz_buzz?(i)
'Buzz'
when fizz_buzz?(i)
'FizzBuzz'
else
i
end
end
end
1.upto(100) do |i|
puts FizzBuzz.to_p(i)
end
これをpythonで書こうとしてるのですが、書き方がわかりません。
以下が私の書いたPythonのコードです。(実行できません。)
Pythonらしく書くにはこうするとよいなどのアドバイスもいただけると幸いです。
class FizzBuzz:
@classmethod
def is_fizz(i):
return (i > 0 and (i % 3) == 0)
@classmethod
def is_buzz(i):
return (i > 0 and (i % 5) == 0)
@classmethod
def is_fizz_buzz(i):
return (self.is_fizz(i) and self.is_buzz(i))
@classmethod
def to_print(i):
if self.is_fizz(i) and not self.is_fizz_buzz(i):
return 'Fizz'
elif self.is_buzz(i) and not self.fizz_buzz(i):
return 'Buzz'
elif self.fizz_buzz(i):
return 'FizzBuzz'
else:
return i
for i in range(1, 101):
print FizzBuzz.to_print(i)