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
きょうはここまで。