プログラミング入門II
2025.04.23
リスト その1
今回は簡単な復習問題ということで,基本的には大体の人が出来ていました.この調子で頑張って下さい. 解答用紙の勝手な改ざんがありました.きちんとそのまま用紙の注意に従って解答を作成してください. シートのヘッダ部分削除: 23_68 (年度_番号)
import random
print('Student number: s246004') # <-- 書き換える
for _ in range(5):
for _ in range(10):
num = random.randint(1,200)
print(f'{num:3d}', end=' ')
print() # <-- 消さない
「消さない」と指示している print() は学生番号の表示と一続きのもので,解答はそれ以降に記入してください.以下のように学生番号と実行結果が連続した行になってしまって,見づらくなります.
Student number: s****** 191 48 170 144 60 97 117 144 105 100 89 178 166 102 134 87 139 196 85 57 118 182 62 69 166 8 180 148 190 52 88 13 69 37 163 107 177 126 173 120 117 122 33 115 171 50 197 70 40 92 |
# ############################# import random print('Student number: s******') # <-- 書き換える print() # <-- 消さない import random |
上の例は元々の解答用紙に import random を付けているのに,自分で再度 import しているものです.
さて,以下は問題のあるプログラムの例です.参考にしてください.
for _ in range(1,6): for i in range(1,11): i=random.randint(1,200) print(f'{i: 4}',end='') else: print() |
for 文の range 関数を使って値を入れていく変数 i に変なものを代入しないでください.
for _ in range(6): for _ in range(11): i=0 i+=random.randint(1,200) print(f'{i:3}',end=' ') print('') |
こちらも同じですね.
for _ in range(5): numbers = [random.randint(1, 200) for _ in range(10)] for num in numbers: print(f"{num:3}", end=" ") |
内側の for 文の数値の表示を終わった後の改行がありません.以下のように結果が1行で表示されています.
12 195 175 126 48 178 122 88 113 7 175 178 191 25 144 51 113 20 158 125 37 168 118 9 97 153 156 65 99 156 74 98 136 39 143 60 88 78 174 44 179 91 83 68 92 174 2 140 2 55 |
昨年度行ったプログラミング入門Iの範囲のPythonに関する復習で反復処理と文字列に関する演習問題に取り組みました.ただ,それは実際に学習したものの一部にすぎませんので,やらなかった部分についてもしっかりと見返しておいてください.
プログラミング言語であればどの言語でも「配列」が用意されています.複数の値を一つの名前で扱うことができる便利なものです.今回学習する「リスト」は,教科書の p.165 にも書いてあるように,「配列をパワーアップさせた」ものです.その分機能が多いので,すべてを理解するには相当な時間がかかります.今回は教科書に沿って基本的なところを見ていくことにします.
教科書の p.166 にまとめてある 1 から 9 番までの記述がリストをきちんと説明しているので,まずは,ここをしっかり理解しましょう.また,Fig.7-2 もよく見て理解しましょう.Python はオブジェクト指向型の言語なので,リストもオブジェクトへの参照ということで,型の異なる値などもひとまとめにして扱える便利なものです.
リストは複数の値を一つにまとめていますので,リスト自体を print 関数で表示すると,その形態のままで出力されます.以下の例で確認してみてください.
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 を使う方法 |
他にも,教科書の p.176 の append を使う方法もあります.この授業では今回は None を使う方法を紹介します.内包表記については後日改めて紹介します.
リストの要素はインデックスによってアクセスできます.前回まで学習した文字列と同様,インデックスは 0 番から始まります.また,こちらも文字列と同様 負の数によって末尾の要素からの順番でもアクセスできます.
次回行います.
こちらも次回行います.
今回の演習問題です.
宿題は今回もMoodleを使用します.23日の18:00以降に閲覧可能となります.GWによる特別な日程となりますので,提出も変則的になり,5月1日の10:00としますから注意してください.
次回は教科書のp.190-199の範囲を学習しますので,予習をしてきてください.