turtlechanのブログ

無知の私がLinuxをいじりながら書いていくブログ

【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の倍数だといえる。