【Python】No.9002 FizzBuzz - yukicoder
python2で解く。
※私がPythonの学習のために解説する記事なので間違い等あるかもしれません。
問題URL: https://yukicoder.me/problems/no/9002
ソースコード
no9002.py
#! /usr/bin/env python # coding: utf-8 def main(): first = raw_input() for i in range(1, int(first) + 1): if i % 15 == 0: print('FizzBuzz') elif i % 5 == 0: print('Buzz') elif i % 3 == 0: print('Fizz') else: print(i) if __name__ == '__main__': main()
解説
入力値
N
Nは整数(1 ≦ N ≦ 100)
6行目
first = raw_input()
変数 first に標準入力の値を文字列型で代入。
8 ~ 16行目
for i in range(1, int(first) + 1):
if i % 15 == 0:
print('FizzBuzz')
elif i % 5 == 0:
print('Buzz')
elif i % 3 == 0:
print('Fizz')
else:
print(i)
range 関数で1からNまでのリスト [1, 2, ..., N] を作り for ループで一つずつ処理していく。
条件分岐は if でできる。elif は前条件がヒットしてると処理されないので、3の倍数かつ5の倍数(15の倍数)を一番最初の条件式に持ってくるのが良いと思う。else はどの条件にも当てはまらなかった場合に処理される。
倍数の判別は % 演算子を使う。a % bは a を b で割ったときの余りを表す。a を b で割った余りが 0 ならbの倍数であるといえる。
例えば、6 % 3 なら 6 を 3 で割ると 2 余り 0。よって、答えは 0 つまり3の倍数だといえる。