# 関数 def hello(): # 関数を定義 print('Howdy!') print('Howdy!!!') print('Hello there.') hello() # 関数の呼び出し
# パラメータのあるdef文 def hello(name): print('Hello ' + name) hello('Alice') hello('Bob')
# 戻り値とreturn文 import random def get_answer(answer_number): if answer_number == 1: return '確かにそうだ' elif answer_number == 2: return '間違いなくそうだ' elif answer_number == 3: return 'はい' elif answer_number == 4: return 'なんとも。もういちどやってみて' elif answer_number == 5: return 'あとでもう一度聞いてみて' elif answer_number == 6: return '集中してもう一度きいてみて' elif answer_number == 7: return '私の答えはノーです' elif answer_number == 8: return '見通しはそれほどよくない' elif answer_number == 9: return 'とても疑わしい' r = random.randint(1, 9) # 1から9までのランダムな整数 fortune = get_answer(r) print(fortune)
# print()関数 # print()関数は渡された文字列の末尾に改行文字を自動的に追加する print('Hello') print('World') # 改行を表示されないようにする print('Hello', end='') print('World')
# 複数の文字列をprint()に渡すと、文字列の間に1文字のスペースを自動的に追加する print('cats', 'dogs', 'mice') # キーワード引数のsepを使って、区切り文字を変更する print('cats', 'dogs', 'mice', sep=',')
# ローカル変数はグローバルスコープから使えない from errno import E2BIG def spam(): eggs = 31337 spam() print(eggs)
実行結果:
NameError: name 'eggs' is not defined
# ローカルスコープでは他のローカルスコープの変数を使えない def spam(): eggs = 99 bacon() #ローカルスコープ②が生成 print(eggs) def bacon(): ham = 101 #ローカルスコープ② eggs = 0 #ローカルスコープ①とは別の変数 spam() #ローカルスコープ①が生成
実行結果:
99
# グローバル変数はローカルスコープから読むことができる def spam(): print(eggs) # グローンバル変数のeggsを参照する eggs = 42 spam() print(eggs)
実行結果:
42 42
# 同じ名前のローカル変数とグローバル変数 def spam(): eggs = 'spam local' print(eggs) # 'spam local'を表示 def bacon(): eggs = 'bacon local' print(eggs) # 'bacon local'を表示 spam() print(eggs) # 'bacon local'を表示 eggs = 'global' bacon() print(eggs) # 'global'を表示
実行結果:
bacon local spam local bacon local global
# global文 def spam(): global eggs # eggsはグルーバル変数であることを定義 eggs = 'spam' # グローバルスコープのeggsに代入される eggs = 'global' spam() print(eggs)
実行結果:
spam
def spam(): global eggs eggs = 'spam' # グローバル変数になる def bacon(): eggs = 'bacon' # ローカル変数になる def ham(): print(eggs) # グローバル変数になる eggs = 42 spam() print(eggs)
実行結果:
spam
# 例外処理 def spam(divide_by): return 42 / divide_by print(spam(2)) print(spam(12)) print(spam(0)) print(spam(1))
ZeroDivisionError: division by zero
# tryとexcept文で例外を処理 def spam(divide_by): try: return 42 / divide_by except ZeroDivisionError: print('エラー:不正な引数です') print(spam(2)) print(spam(12)) print(spam(0)) print(spam(1))
21.0 3.5 エラー:不正な引数です None 42.0
# 数当てゲーム import random secret_number = random.randint(1, 20) print('1から20までの数を当ててください') # 6回聞く for guessses_token in range(1, 7): # 最大6回繰り返す print('数を入力してください') guess = int(input()) # 入力した文字列を整数値に変換 if guess < secret_number: print('小さいです') elif guess > secret_number: print('大きいです') else: break # 当たり!forループから抜ける if guess == secret_number: print('当たり!' + str(guessses_token) + '回で当たりました!') else: print('残念。正解は' + str(secret_number) + 'でした。')