ノーベル平和賞を受賞した World Food Programme について調べてみた。 (公式アナウンス)
print関数と input関数を使った表示と入力。
if文) と繰り返し (while文)。
if 条件式:
条件式が真であるときに実行される文
else:
条件式が真でないときに実行される文
else: 以降は省略できる。
if 条件式:
条件式が真であるときに実行される文
x が 3 のとき、x > 2 は成り立つか?
y が 0 のとき、y < 0 は成り立つか?
z が 1 のとき、1 != z は成り立つか?
t が 7 のとき、3 > 7 は成り立つか?
Python による繰り返し (while文) の構文を思い出そう:
i = 0
while i < 10:
print(f"i={i}")
i = i + 1
print("end")
loop.py で、
最後に表示される i の値はいくつか。
if文を挿入し、
if i == 5:
print("five!")
"i=5" を表示した直後に "five!" を表示したい:
i=0 i=1 i=2 i=3 i=4 i=5 five! i=6 i=7 ...上の
if文を挿入すべき箇所はプログラム中のどこか。
「1を足す」「1を引く」だけの計算を使って、整数の和 a + b を計算する:
a = int(input("a:"))
b = int(input("b:"))
while 0 < b:
a = a + 1
b = b - 1
print(f"answer={a}")
0 < b の部分には、
0 < b のかわり別の条件式を入れてもよい。
そのような条件式の例をひとつ挙げよ。
さらに上の結果を使って、今度は掛け算を実現することを考える。 以下のプログラムは与えられた整数 p と q に対して p × q を計算する。
p = int(input("p:"))
q = int(input("q:"))
a = 0
while 0 < q:
(変数 a に p の値を足す)
q = q - 1
print(f"answer={a}")
ここで (変数 a に p の値を足す) の部分に 上の add.py の処理を埋め込むと、以下のようになる:
p = int(input("p:"))
q = int(input("q:"))
a = 0
while 0 < q:
b = p
while 0 < b:
a = a + 1
b = b - 1
q = q - 1
print(f"answer={a}")
先々週の小課題 1 を採点した結果 判明した、よくある間違い:
text と image) が正しく作られていない。
なぜこれほど厳しく採点するのかというと、 通常、プログラミングでは 1文字でも間違ったら動かない というケースが多々あるためである。
教訓: 問題は正確に読むこと。
10進数における 0〜15 までの数を 2進数の 0000〜1111 で 表した結果は以下のようであった:
| 10進数 | 2進数 | 10進数 | 2進数 | 10進数 | 2進数 | 10進数 | 2進数 |
|---|---|---|---|---|---|---|---|
| 0 | |
4 | |
8 | |
12 | |
| 1 | |
5 | |
9 | |
13 | |
| 2 | |
6 | |
10 | |
14 | |
| 3 | |
7 | |
11 | |
15 | |
Python では、もちろん +1, -1 だけではなく、実際の四則演算が可能である。
+, -, *, / などの記号を
演算子 (operator) という。
a + b | a と b を足した値 |
a - b | a から b を引いた値 |
a * b | a と b を掛けた値 |
a // b | a を b で割った値 (商) |
a % b | a を b で割った値 (余り) |
a / b | a を b で割った値 (実数) |
a ** b | べき乗 ab |
c = a + b
det = a*d - b*c det = a d - b c (演算子は省略できない) det = ad - bc (変数 ad から変数 bc の値を引くことになる)
s = n*(n+1)/2
s = n(n+1)/2 (演算子は省略できない)
print(f"result={a+b}")
以下のプログラムを実行し、 a と b にいろいろな値を入力せよ。 b = 0 とすると何が起こるか?
a = int(input("a:"))
b = int(input("b:"))
print(f"a+b = {a+b}")
print(f"a-b = {a-b}")
print(f"a*b = {a*b}")
print(f"a//b = {a//b}")
print(f"a%b = {a%b}")
print(f"a/b = {a/b}")
a = int(input("a:"))
b = int(input("b:"))
avg = (a+b)/2
print(f"average = {avg}")
total = 0 とする。
x に値を入力する。
total に加える。
x = 0 が入力されるまで繰り返す。
total = 0
x = 1
while x != 0:
x = int(input("x:"))
total = total + x
print(f"total = {total}")
2つの数の最大公約数を発見する以下のプログラム gcd.py を完成させよ:
a と b の 2つの値を入力する。
a を b で割った余り a % b を計算する。
b の値とし、2. に戻る。
b の値を表示する。
まず、簡単な例 (a=12, b=3 など) を手作業でやってみて、 同じことをするプログラムを書け:
a = int(input("a:"))
b = int(input("b:"))
c = a % b
while c != 0:
a = ???
b = ???
c = a % b
print(f"gcd = {b}")
Visual Studio Code (以下 VS Code) は高機能なテキストエディタで、 Python のプログラムを書いたり実行したりするのに使える。
まず https://code.visualstudio.com/ に アクセスし、VS Code をダウンロードする。
インストールするには、以下の方法に従う:

インストールが終わったら、左下の歯車アイコンをクリックして 「Extensions (拡張機能)」を選ぶ。

ここでさらに「Python」を選択し、インストールする。

VS Code が正しくインストールされると、 コマンド プロンプト上で以下のようにして VS Code を メモ帳のかわりに使える:
C:\Users\euske\Desktop\cs1> notepad hello.py (使用前) C:\Users\euske\Desktop\cs1> code hello.py (使用後)
さらに VS Code (+ Python 機能拡張) では、 編集中のプログラムを同じウィンドウ上でそのまま実行できる。 右上の「再生」ボタンをクリックすればよい。

今回は、数値だけを使ってアニメーションを表示してみる。
import time # 変数を定義する。 img0 = 1000000000000000000000000000 img1 = 1000000000110000110000000000 img2 = 1000000000110000110000000000 img3 = 1000000000000000000000000000 img4 = 1000001100000000000011000000 img5 = 1000000110000000000110000000 img6 = 1000000011000000001100000000 img7 = 1000000000111111110000000000 img8 = 1000000000000000000000000000 img9 = 1000000000000000000000000000 # 30回繰り返す。 t = 0 while t < 30: print(img0) print(img1) print(img2) print(img3) print(img4) print(img5) print(img6) print(img7) print(img8) print(img9) print() time.sleep(0.1) # すこし待つ。 t = t + 1
ここでは表示の間に「0.1秒だけ待つ」という機能を使っている:
import time はプログラムの最初に 1回だけ必要。
import time ... time.sleep(秒数)
time.sleep(60) time.sleep(1.25)
これだけでは同じ絵が繰り返し表示されるだけなので、 すこし変更を加える:
import time # 変数を定義する。 img0 = 1000000000000000000000000000 img1 = 1000000000110000110000000000 img2 = 1000000000110000110000000000 img3 = 1000000000000000000000000000 img4 = 1000001100000000000011000000 img5 = 1000000110000000000110000000 img6 = 1000000011000000001100000000 img7 = 1000000000111111110000000000 img8 = 1000000000000000000000000000 img9 = 1000000000000000000000000000 # 30回繰り返す。 t = 0 while t < 30: print(img0) print(img1) print(img2) print(img3) print(img4) print(img5) print(img6) print(img7) print(img8) print(img9) print()# 1桁減らす。 img0 = img0 // 10 img1 = img1 // 10 img2 = img2 // 10 img3 = img3 // 10 img4 = img4 // 10 img5 = img5 // 10 img6 = img6 // 10 img7 = img7 // 10 img8 = img8 // 10 img9 = img9 // 10time.sleep(0.1) # すこし待つ。 t = t + 1
実はプログラムの多くの部分はコンピュータに対してではなく、
おもに人間に向けて書かれている。
そのため、たいていのプログラミング言語では動作を説明するための注釈、
あるいは コメント (comment)を入れることができる。
Python では「#」記号がコメントを表す。
コメント (注釈文) とは、プログラムのわかりにくい部分を説明するための
日本語の文である。コメント部分は、なにも実行されない。
# コメント
「#」から行末までがコメントとみなされる。
# 挨拶する。
print("hello")
print("hello") # 挨拶する。
#print("hello")
文の先頭をコメントにすると、何も実行されない。
このような実行されない部分を「コメントアウトされた部分」などと呼ぶ。
上のプログラム anim.py を入力し、実行せよ。
プログラムを変更し、違った動きをするように改造せよ。
time.sleep(0.1) の部分を
コメントアウトすると、なにが起こるか?
gcd.py」を
T2SCHOLA から提出せよ。
print文、if文、while文、
四則演算の機能を使ってよい。
input関数は使わない)。