4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ...

14
4: 循環小数の循環を止める

Transcript of 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ...

Page 1: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

4: 循環小数の循環を止める

Page 2: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

文字列

Page 3: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

文字列

3

例 ) ss = "Coffee"

引用符

[0] [1] [2] [3] [4] [5]

ss C o f f e e

ss[2]

n = len(ss) ← ss に格納されている文字列の長さ

ss = input("文字列を入力しよう: ")for i in range(len(ss)):

print( ss[i] )

printString.py $ python printString.py文字列を入力しよう: Ice%creamIce%...文字列を入力する方法

Page 4: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

文字コードASCII

文字コード‣ 文字もコンピュータ内では数字 (2 進数)‣ 文字を2進数で表すことを文字コードという.

ASCII‣ 英数字の文字コード

その他‣ 日本語(ISO-2022-JP, SJIS)

世界(EUC, Unicode)

4

Page 5: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

文字コードASCII

5

char = 'b'code = ord(char)

code = 98char = chr(code)

ord(char)

chr(code)

文字 ASCII

char = 'b' code = 98

Page 6: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

文字コードASCII

6

[0] [1] [2] [3] [4]

ss C a b c z

[0] [1] [2] [3] [4]

aa 67 97 98 99 122

ss="Cabcz"

aa=[67,97,98,99,122]

bb=b'Cabcz'[0] [1] [2] [3] [4]

bb 'C' 'a' 'b' 'c' 'z'

bb=bytes(aa)aa=list(bb)

bb=ss.encode("ascii")ss=bb.decode("ascii")

文字列 (string)

バイト列 (bytearray)

配列 (list, array)

Page 7: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

宿題2

Page 8: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

宿題2 問1:最大値

8

array = list(map(int, input("a = ").split()))

# 以下が計算部分

max_v = -100000 # マイナス無限大と言える数max_j = -1

for j in range(len(array)):

print("max_v =", max_v)

print("max_j =", max_j)

max.py

宿題(1)

$ python max.pya = -3 8 19 -4max_v = 19max_j = 2$

Terminal

最大値 = 𝑚𝑎𝑥(𝑎0, 𝑎1, … , 𝑎𝑛−1)

Page 9: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

宿題2 問2:英小文字のみ

9

ss = input("文字列を入力しよう: ")

aa = ss.encode("ascii")

for i, code in enumerate(aa):

abcPrint.py

宿題(2)

$ python abcPrint.py文字列を入力しようIce%%creamcecream$

英小文字のみ画面に出力するプログラムを作ろう.

ヒント:'a'のASCIIは97あるいはord('a'); 'z'は122

Page 10: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

循環小数の循環を止める

プロジェクト2

Page 11: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

テーマ 循環小数の循環を止める

配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

これだと無限に小数を出し続ける場合がある !!

3. 次週のレポート予告 レポート#2

from time import sleepd = int(input("分母 d を下さい(2以上の整数): "))print("1 /", d, " を求めます")done = False; x = 1; count = 0

while not done:x = x * 10q = x // dcount += 1amari = x % d

print(count, " : ", q, " (", amari, ")")sleep(0.25)if amari == 0:

done = Trueelse:

x = amari

junkan.py

Terminalの強制終了は

キーボードでControl-C

Page 12: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

テーマ 循環小数の循環を止める

配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

3. 次週のレポート予告 レポート#2

やるべきこと

配列をうまく使って循環小数になっても止まるようにプログラムを改良する.

from time import sleepd = int(input("分母 d を下さい(2以上の整数): "))print("1 /", d, " を求めます")done = False; x = 1; count = 0

while not done:x = x * 10q = x // dcount += 1amari = x % d

print(count, " : ", q, " (", amari, ")")sleep(0.25)if amari == 0:

done = Trueelse:

x = amari

junkan.py

Page 13: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

やるべきこと

配列をうまく使って循環小数になっても止まるようにプログラムを改良する.提出物はソースコードのみでよい. 〆切:次回の授業開始時

提出物と採点基準(満点 15)

今回はプログラムに名前と学籍番号を書いて提出する. (5)

説明はプログマルのコメント(#)や余白のスキャンとして書く

・ どうやって循環を見つけるのかの説明 (10)

(読み手はそのやり方を知らないと思って書くこと)

・ 工夫があれば(加点)その工夫も説明すること. (~ 5 ← 加点)注)20行や余白1枚に書き込める程度の説明で十分ですが,それより少々長くなっても問題ありません.

テーマ 循環小数の循環を止めるレポート#2

配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

ただし,

Page 14: 4: 循環小数の循環を止めるichiji/cs-19/cs1-4.pdfテーマ 循環小数の循環を止める 配列は同じようなデータを統一的に処理するには便利な道具だが,それ以外にも賢い使い方がいくつかある.その例を考えてみよう.

ヒント

14

0

1

2

3

d=4

0.

2

5

0

1

2

3

4

5

d=6

0.

1

6

0

1

2

3

45

6

d=7

0.

1

42

8

57

0.142857142857...0.16666...0.25

余り