Open tora-muscle opened 1 year ago
演習 3-1 コンピュータのプログラムは音楽の楽譜と似た面があります. 音楽の楽譜も基本は前から順に音符を演奏することです(プログラムは上から下,楽譜は左から右と方 向は異なります). このほか,演奏箇所を切り替えたり,繰り返したりする記法があることを確認してみてください.
▼ 語彙
PEP8[13] とは
PythonのPEP 8に定められた、変数などの命名規則をまとめました。(中略) (モジュールをPythonに認識させるため、init.pyが必要です。また、フォルダの階層をさらに深くすることも可能)。 https://helve-blog.com/posts/python/python-pep8-naming-conventions/
▼ 演習
演習 3-2 さまざまな変数名を利用する練習. p2-1.py で示したプログラムについてシェル上での実行で構いませんから,変数 名をさまざまに代えて練習してみてください.
- 1 行目と2行目の変数名を両方,同一のものに変更しなければならないことに注意してください.
- 複数語をアンダースコアで接続した変数名も試すこと.
- また,先頭に数字を用いた場合,予約語を用いた場合などにどのようなエラーが生じるかも併せて試みてください
先頭に数字を用いた場合どのようなエラーが生じるか
File "/Users/**/KURENAI_Python_Tutorial/p3-2.py", line 10
12_sum = 2 + 1
^
SyntaxError: invalid decimal literal
予約語を用いた場合
File "/Users/**/KURENAI_Python_Tutorial/p3-2.py", line 14
if = 2 + 1
^
SyntaxError: invalid syntax
▼ 演習
演習 3-3 変数の動作の説明 以下は 1000 円の商品の 15% 引きを計算するプログラムです.
- このプログラムには 1 箇所誤りがあり,実行するとエラーになります.どの ような誤りがあるかを説明してください.
- 誤りを修正したうえでプログラムの動作を説明してください. kakaku = 1000 nebikiritsu= 15 kakaku = Kakaku*(100-nebikiritsu)/100 print(kakaku)
# 変数 nebikimae_kakaku に整数 1000 を格納
nebikimae_kakaku = 1000
# 変数 nebikiritsu に整数 15 を格納
nebikiritsu = 15
# 割引を適用した kakaku を計算
kakaku = nebikimae_kakaku*(100-nebikiritsu)/100
# print関数で kakaku を表示
print(kakaku)
▼ 疑問
インクリメント、デクリメントは何で対応するの?
変数の値を1つ増減させるには以下のようなやり方がある。
- 代入文または累算代入文を使用
- 特定の範囲で1ずつ変化する値を使用するにはrange関数を使用する
- リストの要素と対応するインデックスを反復するにはenumerate関数を使用する
▼ メモ
type()
▼ 演習
演習 3-4 データの型の確認 Python シェルで以下を実行してください. a=1 b = 1/2 c = “ABC” print(a) print(b) print(c) print(type(a)) print(type(b)) print(type(c))
1
0.5
ABC
<class 'int'>
<class 'float'>
<class 'str'>
▼ メモ
id()
▼ 演習
演習 3-5 平方根を求めるプログラムの作成と実行 次の表のソースコードの部分を IDLE エディタで入力し, p3-1.py という名で保存 して実行してみてください.(␣のかわりに空白を入力すること)
# x の平方根を求める
x = 2
#
rnew = x
#
r1 = rnew
r2 = x/r1 # 三角形の関係式から図形的に求めている
rnew = (r1 + r2)/2
print(r1, rnew, r2)
#
r1 = rnew
r2 = x/r1
rnew = (r1 + r2)/2
print(r1, rnew, r2)
#
r1 = rnew
r2 = x/r1
rnew = (r1 + r2)/2
print(r1, rnew, r2)
#
r1 = rnew
r2 = x/r1
rnew = (r1 + r2)/2
print(r1, rnew, r2)
# 出力結果
# 2 1.5 1.0
# 1.5 1.4166666666666665 1.3333333333333333
# 1.4166666666666665 1.4142156862745097 1.411764705882353
# 1.4142156862745097 1.4142135623746899 1.41421143847487
演習 3-6 エラーを体験する(1). プログラム 3-1で 4 行目の rnew を誤って rmew と綴ってみて実行し,どのよ うなエラーになるかを確かめてください.17 章「IDLE/Python でのエラーメッセー ジの読み方」も併せて参照すること.
# x の平方根を求める
x = 2
#
rmew = x
#
r1 = rnew
r2 = x/r1 # 三角形の関係式から図形的に求めている
rnew = (r1 + r2)/2
print(r1, rnew, r2)
#
r1 = rnew
r2 = x/r1
rnew = (r1 + r2)/2
print(r1, rnew, r2)
#
r1 = rnew
r2 = x/r1
rnew = (r1 + r2)/2
print(r1, rnew, r2)
#
r1 = rnew
r2 = x/r1
rnew = (r1 + r2)/2
print(r1, rnew, r2)
# 出力結果
# Traceback (most recent call last):
# File "/**/KURENAI_Python_Tutorial/p3-1.py", line 6, in <module>
# r1 = rnew
# ^^^^
# NameError: name 'rnew' is not defined. Did you mean: 'rmew'?
演習 3-7 他の数値の平方根を求める.
- p3-1.py を変更して,他の正の数値の平方根を求めてください.
- また,このプログラムで 0 の平方根を求めようとすると何が生じるか確認し てください.単にエラーのメッセージを見るだけでなく,実際にプログラム をご自身で追いかけて(トレースすると言います),どこで問題が生じるかを 考えてください.
# 出力結果
# 13 7.0 1.0
# 7.0 4.428571428571429 1.8571428571428572
# 4.428571428571429 3.6820276497695854 2.9354838709677415
# 3.6820276497695854 3.6063454894655185 3.5306633291614515
r2 = x/r1
の分母が0となり、エラーが生じる
# 出力結果
# Traceback (most recent call last):
# File "/**/KURENAI_Python_Tutorial/p3-1.py", line 7, in <module>
# r2 = x/r1 # 三角形の関係式から図形的に求めている
# ~^~~
# ZeroDivisionError: division by zero
▼ メモ
▼ メモ
r1
に対して注意メッセージが出ていた
r1 > 0
が保証されていなかったため以下のようにカンマ区切りで変数への代入を記述することができる
a=1
b=2
a, b = b, a
print(a)
print(b)
# 出力
# 2
# 1
3.1 本章の学習の目標