プログラミング入門II
2024.04.24
リスト その1
今季最初の課題でしたが,全体的にはかなり良かったようです.エラーや無限ループになるものもなく,安心しました.今後もしっかりやっていきましょう. 軽微なミスが以下のようにありましたので,こちらは以後注意しましょう. 解答用紙の番号間違い: b2320 出力時番号間違い: b2316 b2333 以下は気になったプログラムの例です.参考にしてください. 上のように必要のない変数を用意して書いてあるものが何件かありました.無駄な変数は使わないようにしましょう. 改行しないための処理が無いので,5行になる表示ではなく,以下のようになってしまいます.自分で見てもわかるはずなので,ちゃんと対応してから提出してください. 上の条件では80が出ても終わりませんね. とりあえず100回くらいやれば80以上の数も出るだろうから,というような処理は歓迎しません. print() 関数のところでスペースを入れていないので,下のような表示になります.自分でも実際に実行させてみているはずなので,ちゃんとしたものにしてから提出してください. if - else にしないといけないものですか?まったく無駄な行(何もしない行)がありますよね. まず最初に発生させる乱数 num が不要ですよね.乱数の発生が都合3回ありますが,それは要りません. 処理は間違っていないのですが,インデントがTAB2個分になっています.横にずれる量が多いと,それはそれで見にくいので,ちゃんと4文字分のTABで書いてください.
昨年度行ったプログラミング入門Iの範囲のPythonに関する復習で反復処理と文字列に関する演習問題に取り組みました.ただ,それは実際に学習したものの一部にすぎませんので,やらなかった部分についてもしっかりと見返しておいてください.
プログラミング言語であればどの言語でも「配列」が用意されています.複数の値を一つの名前で扱うことができる便利なものです.今回学習する「リスト」は,教科書の p.165 にも書いてあるように,「配列をパワーアップさせた」ものです.その分機能が多いので,すべてを理解するには相当な時間がかかります.今回は教科書に沿って基本的なところを見ていくことにします.
教科書の p.166 にまとめてある 1 から 9 番までの記述がリストをきちんと説明しているので,まずは,ここをしっかり理解しましょう.また,Fig.7-2 もよく見て理解しましょう.Python はオブジェクト指向型の言語なので,リストもオブジェクトへの参照ということで,型の異なる値などもひとまとめにして扱える便利なものです.
リストは複数の値を一つにまとめていますので,リスト自体を print 関数で表示すると,その形態のままで出力されます.以下の例で確認してみてください.
for _ in range(5):
num = 0
while num < 80:
num2 = random.randint(10, 99)
print(f'{num2} ', end = '')
num = num2
else:
print('')
for _ in range(5):
while True:
num = random.randint(10,99)
print(f'{num}')
if num > 80:
print(f'{num}')
break
else:
print()
82
82
89
89
61
67
17
12
63
87
87
93
93
66
18
14
12
38
19
59
32
99
99
for i in range(5):
num = 0
while num <= 80:
num = random.randint(10, 99)
print(f'{num} ', end = '')
else:
print()
for _ in range(5):
for _ in range(100):
r = random.randint(10,99)
print(f'{r} ',end = '')
if (r >=80):
break
for _ in range(5):
num = 0
while num <= 80:
num = random.randint(10,99)
print(f'{num}' , end = '')
print('')
3293
544787
40114335426827705848565630797399
3755392271643837472378151753266890
128095
for _ in range(5):
count = 0
while count < 1:
num = random.randint(10, 99)
print(f'{num} ', end = '')
if num >= 80:
count += 1
else:
count += 0
else:
print()
num = random.randint(10,99)
for _ in range(5):
num = random.randint(10,99)
while True:
print(f'{num} ', end = '')
if num >= 80:
print()
break
else:
num = random.randint(10,99)
for i in range(5):
while True:
num = random.randint(10,99)
if num >= 80:
print(f'{num}')
break
else:
print(f'{num} ',end = '')
lst = [1, 2, 3, 4]
print(lst)
リストの要素を順に表示するときはインデックスを使用して反復処理を用いて行います.
lst = [1, 2, 3, 4] for i in range(0,4): print(lst[i]) |
リストはリスト表記演算子 [ ] をつかって生成できます.また,list 関数を使っても作成できます.
ただし,教科書では基本的には最初に要素を確定させたリストを用意して,その要素に対して処理をする例ばかりが出ています.まず,何か自動でリストを作るという作業となると,教科書 p.169 の None を使う,教科書 p.178 の insert メソッドを使う,もしくは次回行う予定の内包表記を使う必要があります.とりあえず下に None と insert メソッドを使用する方法を載せておきます.
lst = [None] * 10 for i in range(0,10): lst[i] = i print(lst) | lst = [] for i in range(0,10): lst.insert(i,i) print(lst) |
|
None を使う方法 | insert を使う方法 |
この授業では今回は None を使う方法を紹介します.内包表記については後日改めて紹介します.
リストの要素はインデックスによってアクセスできます.前回まで学習した文字列と同様,インデックスは 0 番から始まります.また,こちらも文字列と同様 負の数によって末尾の要素からの順番でもアクセスできます.
次回行います.
こちらも次回行います.
今回の演習問題です.
宿題はいつものようにレポート提出システムを使用します.今回も18:00以降に閲覧可能となりますので,提出をよろしくお願いします.
次回は教科書のp.190-199の範囲を学習しますので,予習をしてきてください.