ざっくりん雑記

プログラミングで忘れそうなことをひたすらメモる

Python - 関数を作ってみる

今回は関数を使ってみます。

※Python2系です

基本的な関数

コード

# --- coding: utf-8 ---

def functionTest():
    print u"pythonで関数を作ってみるテスト"

functionTest()

結果

pythonで関数を作ってみるテスト

引数を使ってみる

"FizzBuzz"というゲームを解く関数を書いてみます。

FizzBuzzとは、複数の人が集まって行うゲーム。ひとりひとりが1から順に数字を発言し、数字が3で割り切れる場合は「Fizz」、5で割り切れる場合は「Buzz」、3と5で割り切れる場合は「FizzBuzz」と発言するゲームです。

コード

# --- coding: utf-8 ---

def fizzbuzz(num):
    if num % 3 == 0 and num % 5 == 0:
        return 'FizzBuzz'
    elif num % 3 == 0:
        return 'Fizz'
    elif num % 5 == 0:
        return 'Buzz'
    else:
        return str(num)

for i in range(1,31):
        print fizzbuzz(i)

結果

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

引数一つ渡せば勝手にFizzBuzzしてくれるように変えてみる

コード

# --- coding: utf-8 ---

def fizzbuzz(max):
    for i in range(1,(max+1)):
        if i % 3 == 0 and i % 5 == 0:
            print 'FizzBuzz'
        elif i % 3 == 0:
            print 'Fizz'
        elif i % 5 == 0:
            print 'Buzz'
        else:
            print i

# 30までのFizzBuzzやってくれ
fizzbuzz(30) 

結果

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

デフォルト引数

上の場合だと引数を与えないと

TypeError: fizzbuzz() takes exactly 1 argument (0 given)

と怒られますが、関数を定義する際に、「引数 = デフォルト値」と設定してあげれば引数が省略された場合でもデフォルトの値を勝手に実行してくれます。イコールのついた引数をキーワード引数と呼ぶみたい。

# --- coding: utf-8 ---

def fizzbuzz(max=10):
    for i in range(1,(max+1)):
        if i % 3 == 0 and i % 5 == 0:
            print 'FizzBuzz'
        elif i % 3 == 0:
            print 'Fizz'
        elif i % 5 == 0:
            print 'Buzz'
        else:
            print i

# 引数渡してないけどデフォルト引数が10なので大丈夫
fizzbuzz() 

結果

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz

複数の引数を与えてみる

コード

# --- coding: utf-8 ---

def hello(name, num=1):
     print ("Hello! %s " % name + '\n') * num

hello("world", 3)

結果

Hello! world
Hello! world
Hello! world

きょうはここまで。