第7回目 関数作成

ページ名:第7回目 関数作成

このページの変更記録

  • 08/05 13:36 公開

第7回課題実施報告の締め切りは,8/12です。
(締め切りに遅れても受付はします)


課題報告メールの件名は
A-303xxxx-07 名前(漢字名がのぞましい)
のように,してください。名前以外は,必ず,半角文字を使用してください。
最初は,A or B で,クラス(A, B は,大文字で半角文字を守ること)
次の数字は,学生番号(y303xxxx) なら,303xxxx の7桁とすること
最後は,報告する授業の回数です。
間の - は,半角のマイナス記号です。
応用編に入ったら報告するかしないかは,自由です。ただし,最終課題の報告は必須です。



教科書『Python Pocket Reference』
⇒ 教科書 p.数字,と書いてあれば,そこをみて,印をつけておくことをおすすめ。
この講義では,自分のために役立つプログラムを作成できるようにする。料理でいうと,自炊ができるレベルを目指す。


初期化プログラム

Python の動かし方
講義では,Jupyter Notebook を利用する。以下を見ておくとよい。
これでわかる!!Jupyter Notebook超入門(16分)@Youtube
よく発生するプログラムエラー


#初期化プログラム。動作確認を含めて,プログラム作成のとき1度実行しておく
from math import * # math モジュールを利用する
from matplotlib.pyplot import * #グラフ関係を利用する
%matplotlib inline
from numpy import * #ベクトル演算,行列演算を効率化
from scipy.stats import norm #正規分布の計算
pi # πの値が表示されたら,正常動作している
# 課題提出するときは,初期化プログラムをつける必要なし


サンプルプログラムは,ここの表示システムのくせで,行が無駄に空いてます。
本来なら,1行あければ十分です。


関数定義

⇒ 教科書 p.82
 関数を作ることと関数定義といいます。自分独自の関数が定義できることは,プログラムができるといっていいレベルです。料理でいうと自炊レベルができことになります。


 独自の関数定義は,既存の命令(関数)を組み合わせて,作ります。


関数定義の書式は,次のようです。


def 新しい関数名(パラメータ): # パラメータ(argment)は無くてもよい

   いろいろ
   return 値 #return は無くてもよい


 def は,definition(定義)の省略から来ています。


簡単な関数を定義する


tenki = '曇り'
if tenki =='晴れ':

   print('早起きをする')
   print('お弁当を作る')

elif tenki == '曇り':

   print('天気予報を見て,考える')

else:

   print('ゆっくりと寝ている')


から,関数を定義すると,次のようになります。

def ensoku_asa(x): #パラメータ名は何でもよい

   if x =='晴れ': 
       print('早起きをする')
       print('お弁当を作る')
   elif x == '曇り':
       print(' 天気予報を見て,考える')
   else:
       print(' ゆっくりと寝ている') 
   
   return '朝の準備完了' #return 文 は無くてもよい。

#関数読み出し実行
ensoku_asa('晴れ')


tenki = '曇り'
ans = ensoku_asa(tenki)
print(ans)


print(ensoku_asa('雨'))


例 三角形の面積を求める関数を作れ


#三角形の面積を求める
def sankaku_menseki(base, hight):

   ans = 1/2 * base * hight
   return ans

#テスト
teihen = 3
takasa = 10
sankaku_menseki(teihen, takasa)


課題1

例に従って,台形の面積を求める関数を作れ


課題2

化学関連の式から関数を作れ


課題報告は

  • 課題を実施した感想,あれば質問

それに加えて
「独自の関数を作れるようになった。」と書き
課題1または課題2のプログラムも書いてください。
(課題1または課題2のどちらかをやればよい)


(投稿された他の学生のものはコピーして修正しないこと。これをやると伝言ゲームのようにだんだんおかしなプログラムになる)



登場した用語

  • 関数定義 ⇒ 教科書 p.82
  • 引き数(argment) ⇒ 教科書 p.76, 82

サンプル:時刻を表示する関数


def now():

   import datetime
   return datetime.datetime.now()

#テスト
print(now())
print(now())
print(now())


サンプル:ヒストグラムと正規分布を同時に表示する関数


#ヒストグラムと強制的に正規分布図を表示する関数
def dspH_N(D):

   X = arange(mean(D)-3*std(D), mean(D)+3*std(D), std(D)/15) 
   #確率密度関数(X,平均、標準偏差)
   Y = norm.pdf(X, mean(D), std(D))
   HD = hist(D, color='blue')
   r = max(HD[0])/max(Y) #ヒストグラムと曲線のトップをあわせる比率
   plot(X, Y*r, color='red') #折れ線を使って表示
   show()

#テスト
H = (

       183, 178, 173, 178, 168, 
       181, 180, 165, 180, 165
   )

dspH_N(H)


質問と返答

講義への質問は,suehiro3721p@gmail.com まで


講義メモ(先生のための覚え書き)