Python限定のもくもく会で、個人的にFizz Buzz! の問題に取り組んだので、そこでの成果報告です!
Fizz Buzz の問題にチャレンジ
1~398までの数字で、
3で割り切れれば、「Fizz!」を表示する
5で割り切れれば、「Buzz!」を表示する
3と5で割り切れれば、「Fizz Buzz!」を表示する
上記以外の場合は、そのままの数字を表示する
ヒント:for 文と if 文を組み合わせる
シンプルにforとifしか使わない例
sample1.py
for x in range(398):
x = x + 1
if x % 3 == 0:
if x % 5 == 0:
fb = "Fizz Buzz!"
if x % 5 != 0:
fb = "Fizz!"
if x % 3 != 0:
if x % 5 == 0:
fb = "Buzz!"
if x % 5 != 0:
fb = x
print(fb)
andとかorとかelifとかいうものを使う例
sample2.py
for x in range(398):
x = x + 1
if x % 3 == 0 and x % 5 == 0:
fb = "Fizz Buzz!"
elif x % 3 == 0:
fb = "Fizz!"
elif x % 5 == 0:
fb = "Buzz!"
else:
fb = x
print(fb)
関数を使う例
sample3.py
def fb(x):
if x % 3 == 0 and x % 5 == 0:
fb = "Fizz Buzz!"
elif x % 3 == 0:
fb = "Fizz!"
elif x % 5 == 0:
fb = "Buzz!"
else:
fb = x
print(fb)
for x in range(398):
x = x + 1
fb(x)
再帰呼出しを使った例
sample4.py
def count(x):
if x > 1:
count(x - 1)
fb(x)
def fb(x):
if x % 15 == 0:
fb = "Fizz Buzz!"
elif x % 3 == 0:
fb = "Fizz!"
elif x % 5 == 0:
fb = "Buzz!"
else:
fb = x
print(fb)
count(398)
クラスを使う例
sample5.py
class FizzBuzz:
def __init__(self, x):
self.count(x)
def count(self, x):
if x > 1:
self.count(x - 1)
self.fb(x)
def fb(self, x):
if x % 15 == 0:
fb = "Fizz Buzz!"
elif x % 3 == 0:
fb = "Fizz!"
elif x % 5 == 0:
fb = "Buzz!"
else:
fb = x
print(fb)
FizzBuzz(398)
出力結果
1
2
Fizz!
4
Buzz!
Fizz!
7
8
Fizz!
Buzz!
11
Fizz!
13
14
Fizz Buzz!
16
17
Fizz!
19
Buzz!
Fizz!
22
23
Fizz!
Buzz!
26
Fizz!
28
29
Fizz Buzz!
31
32
Fizz!
34
Buzz!
Fizz!
37
38
Fizz!
Buzz!
41
Fizz!
43
44
Fizz Buzz!
46
47
Fizz!
49
Buzz!
Fizz!
...
...
...
386
Fizz!
388
389
Fizz Buzz!
391
392
Fizz!
394
Buzz!
Fizz!
397
398
問題出典元
たまたまお題が出されたのでやったのですが、下記のURLの問題が大元かと思います。
https://qiita.com/Sekky0905/items/7e2b13f2a001384c7fc4