DNCLとPythonの対応
Pythonプログラミングの学習の最初にこの章を読む必要はありません。
この章は、Pythonによるプログラミングの学習がある程度進んだら、共通テストの受験対策として、共通テストの試作問題などを確認しながら目を通してください。
この章では、共通テストでプログラミングの出題に使用される疑似プログラミング言語DNCLとPythonの対応を示します。
学校や自宅で行うプログラミング演習は、実際のプログラミング言語であるPythonを使用して行い、プログラミングの考え方を身に付けます。一方、共通テストでは、問題は仮想のプログラミング言語DNCLを使用して出題されるため、それを理解した上で解答する必要があります。そこで、PythonのプログラムとDNCLのプログラムの対応を理解し、Pythonで習得したプログラミングの考え方をDNCLに置き換えて考え解答する能力が求められます。
ここでは、PythonとDNCLの対応を示します。日頃の演習で使用しているPythonのプログラムがどのようなDNCLの記述に対応し、DNCLの記述がどのようなPythonのプログラムに置き換えて考えることができるのかという、読み替え・相互変換法を確認し、十分に理解してください。
DNCLは高等学校でのプログラミングの学習に用いられると考えられる、複数のプログラミング言語との対応を考慮して設計されているため、Pythonとの読み替えに関しても大きな障害はないと考えられます。
以下には、上記の独立行政法人大学入試センターが公開しているDNCLの説明資料を引用し、Pythonとの対応を順に示します。
DNCLの記述をPythonで書き換えた例を示している個所では、多くの場合、DNCLの記述で不足している変数の初期化や、実行結果による変数の値の変化がわかるように、それらの表示を行う処理を追加しています。
例示しているPythonプログラムは、PyTermで動作確認できます。
Pythonのプログラムは、PyTermに1文字ずつ転記したり、複写・貼付け(コピー・ペースト)して実行確認することができます。また、その際に、変数の初期化値を変更して、値の違いによるプログラムの動作の違いの確認などをしてください。
変数と値
1 変数と値
変数名は,英字で始まる英数字と『 _ 』の並びです。
例: kosu, kosu_gokei, Tokuten
特に指示がない限り,小文字で始まる変数は通常の変数を表し,大文字で始まる変数は配列を表します。また,すべて大文字の変数は実行中に変化しない値を表します。
Pythonの変数名に使用できる文字はDNCLのそれとほぼ同じです。
kosu = 10
kosu_gokei = 200
Tokuten = [70, 80, 100, 60, 90] #
PI = 3.14256 # 定数
ただし、リスト(配列)を含め、変数名には英子文字、数字、『 _ 』を用い、大文字を使うことは推奨されていません。このため、一般的なPythonのプログラムでは、リスト(配列)の名前も小文字で表記されています。
「実行中に変化しない値」は、一般的に定数と呼ばれます。Pythonでは、定数の記述は、すべて英大文字、数字、『 _ 』を用いて記述することが推奨されています。ただし、叡王文字での定数名の定義は、人間に対する表明に過ぎず、プログラム実行時の取り扱いは通常の変数と同じで、変数と同じように変更できてしまいます。
配列の要素は,要素の番号を添字で指定します。2 次元以上の場合は,添字を『, 』で区切ります。たとえば,(1 次元の) 配列 Tokuten や 2 次元配列 Gyoretu の要素は Tokuten[2] や Gyoretu[3,2] のように表します。添字の値は 0 以上の整数ですが,問題によっては 1 以上の添字のみを扱います。
特に断らない限り,数値は 10 進法で表します。文字列は,文字の並びを 『 「 』と『 」 』 ,または,『 " 』と『 " 』でくくって表します。
例: 100
例: 99.999
例: 「見つかりました」
例: "It was found."
表示文
2 表示文
表示文で数値や文字列や変数の値を表示します。表示文では,複数の値を表示する場合は『と』で区切って並べ,最後に『を表示する』と書きます。
例:「整いました」を表示する (「整いました」と表示されます。) kosu と「個見つかった」を表示する (kosu が 3 のとき,「3 個見つかった」と表示されます。) "(" と x と "," と y と ")" を表示する (x が 5,y が −1 のとき,「(5,-1)」と表示されます。)
Pythonでは表示文にはprint()関数を使用します。print()関数では、カンマで区切って複数の値を指定し、その表示を行うことができます。
print('整いました') # 「整いました」を表示する のPython表現
kosu = 3
print(kosu, '個見つかった') # kosu と「個見つかった」を表示する のPython表現
x = 5
y = -1
print("(", x, ",", y, ")") # "(" と x と "," と y と ")" を表示する のPython表現
print(f'({x}, {y})') # このような表現もできる
整いました
3 個見つかった
( 5 , -1 )
(5, -1)
代入文
3 代入文
代入文は変数に値を設定します。 『←』の左辺に変数または添字付きの配列を,右辺に代入する値を書きます。また,配列の各要素に同じ値をまとめて代入することや,他の配列の内容に置き換えることもできます。
例:kosu ← 3 Tokuten[4] ← 100 Tokuten のすべての要素に 0 を代入する Tokuten ← {87, 45, 72, 100}
DNCLの代入演算子は、[ ← ] となっていますが、Pythonのそれは [ = ] です。
kosu = 3 # kosu ← 3
Tokuten[4] = 100 # Tokuten[4] ← 100
Tokuten = [0]*4 # Tokuten のすべての要素に 0 を代入する
Tokuten = [87, 45, 72, 100] # Tokuten ← {87, 45, 72, 100}
複数の代入文を,『, 』で区切りながら,横に並べることができます。この場合は,代入文は左から順に実行されます。
例:kosu_gokei ← kosu,tokuten ← kosu× (kosu+ 1)
Pythonでは、複数の代入文を一行に並べて書く場合には、文を『 ; 』で区切って横に並べます。
kosu = 10
kosu_gokei = kosu; tokuten = kosu * (kosu + 1) # 2つの代入分を『 ; 』で区切って記述
print('kosu =', kosu)
print('kosu_gokei =', kosu_gokei)
print('tokuten =', tokuten)
kosu = 10
kosu_gokei = 10
tokuten = 110
同じ変数に対する加算や減算を伴う代入(インクリメントやデクリメント)は,『~を~増やす』や『~を~減らす』によって表すこともできます。
例:『kosu を 1 増やす』 は 『kosu ← kosu+ 1』 と同じです。 『saihu を syuppi 減らす』は 『saihu ← saihu- syuppi』と同じです。
Pythonでは、同じ変数に対する加算や減算を伴う代入(インクリメントやデクリメント)は,以下のように記述します。
- 加算:変数 += 式
- 減算:変数 -= 式
kosu = 100
kosu += 1 # kosu を 1 増やす
print(kosu)
kosu = kosu + 1 # kosu ← kosu+ 1
print(kosu)
saihi = 10000
syuppi = 500
saihu -= syuppi # saihu を syuppi 減らす
print(saihi, syuppi)
saihi = saihi - syuppi # saihu ← saihu- syuppi
print(saihi, syuppi)
101
102
9500 500
9000 500
外部から入力された値を代入するために,次のように記述することもあります。
例:x ←【外部からの入力】
Pythonでは、外部からの入力にinput()関数を使用することができます。input()関数は、外部からの入力をすべて文字列として取り込むので、数値として扱いたい(計算に使用したい)場合には、int(), float()関数を使用し、利用する数値データに変換して使用します。
x = input() # 文字列の入力
i = int(input()) # 整数値の入力
f = float(input)) # 実数の入力
演算
4 演算
この節では,算術演算と比較演算,そして論理演算について説明します。比較演算やそれを組み合わせる論理演算は,条件分岐文(5.1 節)や条件繰返し文(5.2 節)の 〈条件〉 で使うことができます。
算術演算
4.1 算術演算
加減乗除の四則演算は,『+』,『-』,『×』,『 / 』で指定します。
整数の除算では,商を『÷』で,余りを『%』で計算することができます。
例:atai ← 7 / 2 (atai には 3.5 が代入されます。) syo ← 7÷ 2 (syo には 3 が代入されます。) amari ← 10% 3 (amari には 1 が代入されます。)
Pythonでは、加減乗除の四則演算は,『 + 』,『 - 』,『 * 』,『 / 』で指定します。
整数の除算では,商を『 // 』で,余りを『 % 』で計算することができます。
atai = 7 / 2 # atai ← 7 / 2 (atai には 3.5 が代入されます。)
print('atai =', atai)
syo = 7 // 2 # syo ← 7÷ 2 (syo には 3 が代入されます。)
print('syo =', syo)
amari = 10 % 3 # amari ← 10% 3 (amari には 1 が代入されます。)
print('amari =', amari)
atai = 3.5
syo = 3
amari = 1
複数の演算子を使った式の計算では,基本的に左側の演算子が先に計算されますが,『×』,『 / 』,『÷』,『%』は, 『+』,『-』より先に計算されます。また,丸括弧『(』と『)』で式をくくって,演算の順序を明示することができます。
例: sogaku ← ne1- ne2- ne3 は,
sogaku ← (ne1- ne2)- ne3 と同じです。
例: kosu ← 1+ kazu÷ 3 は,
kosu ← 1+ (kazu÷ 3) と同じです。
例: heikin ← (hidari+ migi)÷ 2 は,
heikin ← hidari+ migi÷ 2 と異なります。
ne1 = 10
ne2 = 20
ne3 = 30
sogaku = ne1 - ne2 - ne3 # sogaku ← ne1- ne2- ne3 は,
print('sogaku =', sogaku)
sogaku = (ne1 - ne2) - ne3 # sogaku ← (ne1- ne2)- ne3 と同じです。
print('sogaku =', sogaku)
kazu = 5
kosu = 1 + kazu // 3 # kosu ← 1+ kazu÷ 3 は,
print('kosu =', kosu)
kosu = 1 + (kazu // 3) # kosu ← 1+ (kazu÷ 3) と同じです。
print('kosu =', kosu)
hidari= 4
migi = 7
heikin = (hidari + migi) // 2 # heikin ← (hidari+ migi)÷ 2 は,
print('heikin =', heikin)
heikin = hidari + migi // 2 # heikin ← hidari+ migi÷ 2 と異なります。
print('heikin =', heikin)
sogaku = -40
sogaku = -40
kosu = 2
kosu = 2
heikin = 5
heikin = 7
比較演算
4.2 比較演算
数値の比較演算は,『=』,『≠』(あるいは『 ≠』),『>』,『≧』,『≦』,『<』で指定します。演算結果は,真か偽の値となります。
例:kosu > 3 (kosu が 3 より大きければ真となります。) ninzu× 2 ≦ 8 (ninzu の 2 倍が 8 以下であれば真となります。) kaisu ≠ 0 (kaisu が 0 でなければ真となります。)
Pythonの数値の比較演算は,『 == 』,『 != 』,『 > 』,『 >= 』,『 <= 』,『 < 』で指定します。演算結果は,True か False の値となります。
kosu = 5
ninzu = 3
kaisu = 1
print(kosu > 3) # kosu > 3 (kosu が 3 より大きければ真となります。)
print(ninzu * 2 <= 8) # ninzu× 2 ≦ 8 (ninzu の 2 倍が 8 以下であれば真となります。)
print(kaisu != 0) # kaisu ≠ 0 (kaisu が 0 でなければ真となります。)
True
True
True
文字列の比較演算は,『=』,『≠』(あるいは『 ≠』)を利用することができます。『=』は,左辺と右辺が同じ文字列の場合に真となり,それ以外の場合は偽となります。『≠』(あるいは『 ≠』)は,左辺と右辺が異なる文字列の場合に真となり,それ以外の場合(同じ文字列の場合)は偽となります。
例:「あいうえお」=「あいうえお」 (真となります。) 「あいうえお」=「あいう」 (偽となります。) "ABC"="ABC" (真となります。) "ABC"="abc" (偽となります。) 「あいうえお」≠「あいうえお」 (偽となります。) 「あいうえお」≠「あいう」 (真となります。) "ABC"≠"ABC" (偽となります。) "ABC"≠"abc" (真となります。)
Pythonでは、文字列の比較演算は,『 == 』,『 != 』を利用することができます。
print('あいうえお' == 'あいうえお') # 例: 「あいうえお」=「あいうえお」 (真となります。)
print('あいうえお' == 'あいう') # 「あいうえお」=「あいう」 (偽となります。)
print("ABC" == "ABC") # "ABC"="ABC" (真となります。)
print("ABC" == "abc") # "ABC"="abc" (偽となります。)
print('あいうえお' != 'あいうえお') # 「あいうえお」≠「あいうえお」 (偽となります。)
print('あいうえお' != 'あいう') # 「あいうえお」≠「あいう」 (真となります。)
print("ABC" != "ABC") # "ABC"≠"ABC" (偽となります。)
print("ABC" != "abc") # "ABC"≠"abc" (真となります。)
True
False
True
False
False
True
False
True
論理演算
4.3 論理演算
論理演算は,真か偽を返す式に対する演算で,『かつ』,『または』,『でない』の演算子で指定します。論理演算子に優先順位はなく,左側の論理演算が先に実行されますが,丸括弧『(』と『)』で,演算の順序を指定することができます。
『〈式 1〉 かつ 〈式 2〉』は,〈式 1〉と〈式 2〉の結果がいずれも真である場合に真となり,それ以外の場合は偽となります。『〈式 1〉 または 〈式 2〉』は,〈式 1〉と〈式 2〉の結果のどちらかが真である場合に真となり,それ以外の場合は偽となります。『 〈式〉 でない』は, 〈式〉 の結果が真である場合に偽となり,偽の場合は真となります。
例:kosu ≧ 12 かつ kosu ≦ 27 (kosu が 12 以上 27 以下なら真となります。) kosu% 2 = 0 または kosu < 0 (kosu が偶数か負の値なら真となります。) kosu > 75 でない (kosu が 75 より大きくなければ真となります。) kosu > 12 かつ kosu < 27 でない は, (kosu > 12 かつ kosu < 27) でない と同じです。(左側の論理演算子が先に実行されるため。) kosu > 12 かつ kosu < 27 でない は, kosu > 12 かつ (kosu < 27 でない) と異なります。
Pythonでの論理演算は,TrueかFalseを返す式に対する演算で,『 and 』,『 or 』,『 not 』の演算子で指定します。
kosu = 20
print(kosu >= 12 and kosu <= 27) # kosu ≧ 12 かつ kosu ≦ 27 (kosu が 12 以上 27 以下なら真となります。)
print(kosu % 2 == 0 or kosu < 0) # kosu% 2 = 0 または kosu < 0 (kosu が偶数か負の値なら真となります。)
print(not kosu > 75) # kosu > 75 でない (kosu が 75 より大きくなければ真となります。)
print(not kosu > 12 and kosu < 27) # kosu > 12 かつ kosu < 27 でない は,
print(not (kosu > 12 and kosu < 27)) # (kosu > 12 かつ kosu < 27) でない と同じです。(左側の論理演算子が先に実行されるため。)
print(not kosu > 12 and (kosu < 27) # kosu > 12 かつ kosu < 27 でない は,
print(not kosu > 12 and (kosu < 27)) # kosu > 12 かつ (kosu < 27 でない) と異なります。
True
True
True
False
False
False
False
制御文
5 制御文
条件分岐文(5.1 節)や条件繰返し文(5.2 節),順次繰返し文(5.3 節)をまとめて制御文と呼びます。制御文の中の 〈処理〉 として,表示文(2 節),代入文(3 節),値を返さない関数(6.2 節),条件分岐文,順次繰返し文,条件繰返し文を,一つ以上並べて使うことができます。また,条件分岐文や条件繰返し文の中の〈条件〉として,比較演算(4.2 節)と論理演算(4.3 節)を使用することができます。
条件分岐文
5.1 条件分岐文
条件分岐文は, 〈条件〉 が成り立つかどうかによって,実行する処理を切り替えます。
〈条件〉が成り立つときにある処理を実行し,〈条件〉が成り立たないときに実行する処理がない場合は,次のように『ならば』で指定します。
✓《一般形》 ✏もし 〈条件〉 ならば 〈処理〉 を実行する
if 〈条件〉: # もし 〈条件〉 ならば
〈処理〉 # 〈処理〉
# を実行する
例:
もし x < 3 ならば x ← x+ 1 y ← y- 1 を実行する
Pythonで、例に対応したプログラムを示します。
x = 1
y = 10
if x < 3: # もし x < 3 ならば
x = x + 1 # x ← x+ 1
y = y - 1 # y ← y- 1
# を実行する
print('x =', x)
print('y =', y)
x = 2
y = 9
〈処理〉が 1 行しかない場合は,次のように全体を 1 行で書くこともできます。
✓《一般形》 ✏もし 〈条件〉 ならば 〈処理〉 を実行する
if 〈条件〉:〈処理〉 # もし 〈条件〉 ならば 〈処理〉 を実行する
例:
もし x < 3 ならば x ← x+ 1 を実行する
Pythonで、例に対応したプログラムを示します。
x = 1
if x < 3: x = x + 1 # もし x < 3 ならば x ← x+ 1 を実行する
print('x =', x)
x = 2
〈条件〉が成り立つときにある処理を実行し,〈条件〉が成り立たないときに別の処理を実行する場合は,次のように『ならば』と『そうでなければ』を組み合わせて指定します。
✓《一般形》 ✏もし 〈条件〉 ならば 〈処理 1〉 を実行し,そうでなければ 〈処理 2〉 を実行する
if〈条件〉: # もし 〈条件〉 ならば
〈処理 1〉 # 〈処理 1〉
else: # を実行し,そうでなければ
〈処理 2〉 # 〈処理 2〉
# を実行する
例:
もし x < 3 ならば x ← x+ 1 を実行し,そうでなければ x ← x- 1 を実行する
x = 1
if x < 3: # もし x < 3 ならば
x = x + 1 # x ← x+ 1
else: # を実行し,そうでなければ
x = x - 1 # x ← x- 1
# を実行する
print('x =', x)
x = 2
改行位置によって実行結果が変わらないため,各処理が 1 行で書ける場合には,次のように書くこともあります。
✓《一般形》 ✏もし 〈条件〉 ならば 〈処理 1〉 を実行し, そうでなければ 〈処理 2〉 を実行する
if〈条件〉: 〈処理 1〉 # もし 〈条件〉 ならば 〈処理 1〉 を実行し,
else: 〈処理 2〉 # そうでなければ 〈処理 2〉 を実行する
例:
もし x < 3 ならば x ← x+ 1 を実行し, そうでなければ x ← x- 1 を実行する
x = 1
if x < 3: x = x + 1 # もし 〈条件〉 ならば 〈処理 1〉 を実行し,
else: x = x - 1 # そうでなければ 〈処理 2〉 を実行する
print('x =', x)
x = 2
条件分岐の中で複数の条件で実行する処理を切り替えたい場合は,次のように『ならば』と『そうでなければ』の間に『そうでなくもし』を使って条件を追加します。
✓《一般形》 ✏もし 〈条件 1〉 ならば 〈処理 1〉 を実行し,そうでなくもし 〈条件 2〉 ならば 〈処理 2〉 を実行し,そうでなければ 〈処理 3〉 を実行する
if〈条件 1〉: # もし 〈条件 1〉 ならば
〈処理 1〉 # 〈処理 1〉
elif〈条件 2〉: # を実行し,そうでなくもし 〈条件 2〉 ならば
〈処理 2〉 # 〈処理 2〉
else: # を実行し,そうでなければ
〈処理 3〉 # 〈処理 3〉
# を実行する
例:
もし x = 3 ならば x ← x+ 1 を実行し,そうでなくもし y > 2 ならば y ← y+ 1 を実行し,そうでなければ y ← y- 1 を実行する
x = 1
y = 10
if x == 3: # もし x = 3 ならば
x = x + 1 # x ← x+ 1
elif y > 2: # を実行し,そうでなくもし y > 2 ならば
y = y + 1 # y ← y+ 1
else: # を実行し,そうでなければ
y = y - 1 # y ← y- 1
# を実行する
print('x =', x)
print('y =', y)
x = 1
y = 11
改行位置によって実行結果が変わらないため,各処理が 1 行で書ける場合には,次のように書くこともあります。
✓《一般形》 ✏もし 〈条件 1〉 ならば 〈処理 1〉 を実行し, そうでなくもし 〈条件 2〉 ならば 〈処理 2〉 を実行し, そうでなければ 〈処理 3〉 を実行する
if〈条件 1〉: 〈処理 1〉 # もし 〈条件 1〉 ならば 〈処理 1〉 を実行し,
elif〈条件 2〉: 〈処理 2〉 # そうでなくもし 〈条件 2〉 ならば 〈処理 2〉 を実行し,
else: 〈処理 3〉 # そうでなければ 〈処理 3〉 を実行する
例:
もし x = 3 ならば x ← x+ 1 を実行し, そうでなくもし y > 2 ならば y ← y+ 1 を実行し, そうでなければ y ← y- 1 を実行する
x = 3
y = 10
if x == 3: x = x + 1 # もし x = 3 ならば x ← x+ 1 を実行し,
elif y > 2: y = y + 1 # そうでなくもし y > 2 ならば y ← y+ 1 を実行し,
else: y = y - 1 # そうでなければ y ← y- 1 を実行する
print('x =', x)
print('y =', y)
x = 4
y = 10
条件繰返し文
5.2 条件繰返し文
条件繰返し文には,「前判定」と「後判定」の 2 種類があります。
前判定
5.2.1 前判定
〈条件〉 が成り立つ間, 〈処理〉 を繰り返し実行します。
〈処理〉を実行する前に 〈条件〉が成り立つかどうか判定されるため,〈処理〉が 1 回も実行されないことがあります。
✓《一般形》 ✏〈条件〉 の間, 〈処理〉 を繰り返す
前判定の繰り返し分には、while文が対応します。
while〈条件〉: # 〈条件〉 の間,
〈処理〉 # 〈処理〉
# を繰り返す
例:
x < 10 の間, gokei ← gokei+ x x ← x+ 1 を繰り返す
gokei = 0
x = 0
while x < 10: # x < 10 の間,
gokei = gokei + x # gokei ← gokei+ x
x = x + 1 # x ← x+ 1
# を繰り返す
print('gokei =', gokei)
gokei = 45
後判定
5.2.2 後判定
〈条件〉 が成り立つまで, 〈処理〉 を繰り返し実行します。
〈処理〉を実行した後に 〈条件〉が成り立つかどうか判定されるため,〈処理〉は少なくとも 1 回は実行されます。
✓《一般形》 ✏繰り返し, 〈処理〉 を, 〈条件〉 になるまで実行する
あと判定の繰り返し分に直接対応する文は、Pythonにはありませんが、while文で代用することができます。
while True: # 繰り返し,
〈処理〉 # 〈処理〉
if〈条件〉: # を, 〈条件〉 になるまで実行する
break
例:
繰り返し, gokei ← gokei+ x x ← x+ 1 を,x ≧ 10 になるまで実行する
gokei = 0
x = 0
while True: # 繰り返し,
gokei = gokei + x # gokei ← gokei+ x
x = x + 1 # x ← x+ 1
if x >= 10: # を,x ≧ 10 になるまで実行する
break
print('gokei =', gokei)
gokei = 45
順次繰返し文
5.3 順次繰返し文
順次繰返し文は, 〈変数〉 の値を増やしながら, 〈処理〉 を繰返し実行します。
✓《一般形》 ✏〈変数〉 を 〈初期値〉 から 〈終了値〉 まで 〈差分〉 ずつ増やしながら, 〈処理〉 を繰り返す
順次繰り返し分には、for文が対応します。
for文でrange()を使用して変数の処理範囲を指定する場合には、range()の第二引数に〈終了値〉ではなく、〈終了値〉+1を指定する必要があります。
for〈変数〉in range(〈初期値〉,〈終了値〉+ 1, 〈差分〉):
〈処理〉
順次繰り返し文は,以下の手順で実行されます。
- 〈変数〉 に 〈初期値〉 が代入されます。
- 〈変数〉 の値が 〈終了値〉 よりも大きければ,繰り返しを終了します。
- 〈処理〉 を実行し, 〈変数〉 の値に 〈差分〉 を加え,手順 2 に戻ります。
例:
x を 1 から 10 まで 1 ずつ増やしながら, gokei ← gokei+ x を繰り返す
gokei = 0
for x in range(1, 10 + 1, 1): # x を 1 から 10 まで 1 ずつ増やしながら,
gokei = gokei + x # gokei ← gokei+ x
# を繰り返す
print('gokei =', gokei)
gokei = 55
『増やしながら』を『減らしながら』にすると,〈変数〉の値を〈初期値〉から 〈差分〉ずつ減らしながら,
その値が 〈終了値〉 よりも小さくなるまで, 〈処理〉 を繰り返し実行します。
例:x を 10 から 1 まで 1 ずつ減らしながら, gokei ← gokei+ x を繰り返す
gokei = 0
for x in range(10, 0, -1): # x を 10 から 1 まで 1 ずつ減らしながら,
gokei = gokei + x # gokei ← gokei+ x
# を繰り返す
print('gokei =', gokei)
gokei = 55
用意された関数の呼び出し
6 用意された関数の呼び出し
あらかじめ用意された関数には,値を返すものと値を返さないものがあります。関数の動作は,問題文の中で定義されます。
値を返す関数
6.1 値を返す関数
問題文の中で
- 指定された値の二乗の値を返す関数「二乗」を用意する
- 値 m の n 乗の値を返す関数「べき乗 (m,n)」を用意する
- 値 m 以上値 n 以下の整数をランダムに一つ返す関数「乱数 (m,n)」を用意する
- 値 n が奇数のとき真を返し,そうでないとき偽を返す関数「奇数 (n)」を用意する
のように定義された関数を,表示文 (2 節),代入文 (3 節),算術演算(4.1 節),比較演算(4.2 節),あるいは論理演算(4.3 節)の中で使うことができます。関数を呼び出すときは,関数名に続き,『(』と『)』の間に引数を書きます。複数の引数を指定する場合は,『,』で区切ります。
例: y ← 二乗 (x) (y に x の二乗が代入されます。)
例: z ← 二乗 (x) + べき乗 (x,y) (z に x の二乗と x の y 乗の和が代入されます。)
例: r ← 乱数 (1,6) (r に 1 から 6 までの整数のうちいずれかが代入されます。)
Pythonには数値を二乗にする専用の関数はありません。
- べき乗関数pow()を使用する。xの2乗を求める場合には、pow(x, 2)の様に使用する。
- べき乗演算子 ** を使用する。xの2乗を求める場合には、x ** 2の様に使用する。
- 通常の乗算演算子 * を使用する。xの2乗を求める場合には、x ** xの様に使用する。
x = 2
y = pow(x, 2) # y ← 二乗 (x) (y に x の二乗が代入されます。)
print(y)
yy = x ** 2 # y ← 二乗 (x) (y に x の二乗が代入されます。)
print(yy)
yyy = x * x # y ← 二乗 (x) (y に x の二乗が代入されます。)
print(yyy)
z = pow(x, 2) + pow(x, y) # z ← 二乗 (x) + べき乗 (x,y) (z に x の二乗と x の y 乗の和が代入されます。)
print(z)
zz = x ** 2 + x ** y # z ← 二乗 (x) + べき乗 (x,y) (z に x の二乗と x の y 乗の和が代入されます。)
print(zz)
from random import randint
r = randint(1, 6) # r ← 乱数 (1,6) (r に 1 から 6 までの整数のうちいずれかが代入されます。)
print(r)
4
4
4
20
20
3
値を返さない関数
6.2 値を返さない関数
問題文の中で
- 指定された値を 2 進表現で表示する関数「二進で表示する」を用意する
のように値を返さない関数が定義されることがあります。
例: 二進で表示する (11) (「1011」と表示されます。)
def 二進で表示する(x): # 指定された値を 2 進表現で表示する関数「二進で表示する」を用意する
print(f'{x:b}')
二進で表示する(11) # 二進で表示する (11) (「1011」と表示されます。)
1011
新しい関数の定義
7 新しい関数の定義
新しい関数の定義は,DNCL を用いて次のように記述します。
✓《一般形》 ✏関数 〈関数名〉 ( 〈引数列〉 ) を 〈処理〉 と定義する
関数が呼び出される時に引数として与えられる値は、引数列のところに書いた変数名で利用します。複数の引数を指定する場合は,『,』で区切ります。定義した関数は,用意された関数の呼び出し(6 節)と同じ記法で呼び出すことができます。
def 〈関数名〉(〈引数列〉): # 関数 〈関数名〉 ( 〈引数列〉 ) を
〈処理〉 # 〈処理〉
# と定義する