プログラミング入門II
2025.06.11
モジュール
ちょっと慣れてきてうっかりしたミスもまた出てきたようです.注意しましょう. 解答用紙不使用: 24_37 24_44 以下は例によって問題あるプログラムの例です.参考にしてください.
import random
print('Student number: s******')
print()
import random
random_number = random.randint(100000, 999999)
print('Random number:', random_number)
digit_list = list(map(lambda x: int(x), str(random_number)))
print(digit_list)
解答用紙には元々 import random があるのに,再度ついてますね.最初から解答用紙に記入していけばそんなことは起こらないのですがね.
lst = [str(num)[i] for i in range(6)] lst1 = list(map(lambda n: int(lst[n]), range(len(lst)))) |
map 関数を使えば上の行のようなことが要らないことをまず理解しましょう.
rn = random.randint(100000, 999999) rn_str = '' for i in range(6): rn_str += chr((rn // 10 ** (5 - i)) % 10) rn_lst = list(map(lambda x: ord(x), rn_str)) |
こちらも同じで,chr で文字コードにするのではなく,str で文字列にすることをヒントに出していたのですが.
rn=random.randint(100000,999999) print(rn) nl= list(map(lambda x: int(x), str(rn))) |
指定した出力形式は守りましょう.
542444 [5, 4, 2, 4, 4, 4] |
関数についていろいろと学習しました.特に,教科書の p.286 にあるラムダ式について,演習問題や宿題を通していろいろと実習しました.また,map 関数や filter 関数などとラムダ式を組み合わせることで反復処理を使用しない方法もあることがわかったかと思います.
今回はモジュールです.教科書にあるように自分で作成した関数を別ファイルとして用意しておいて,他のファイルとしてある Python スクリプトから呼び出すようにしたものがモジュールです.複数人で開発を担当する場合や,スクリプトをスッキリさせる場合など,実際のプログラミングでは必須のものですので,この機会に試しておきましょう.
なお,今回は教科書 p.300 にあるモジュール検索パスについては,特に意識しなくてもいいように,カレントディレクトリにモジュールを置いておく単純なものとします.また,パッケージについては省略します.
教科書 p.302 にありますが,import 文を活用することで,ソースコードの文字数を減らすことが可能です.これまで乱数の発生で randint を使用していますが,毎回モジュール名が長いので,今後は例えば以下のように短縮します.
from random import randint as randi print(randi(10, 99)) |
今回の演習問題です.
いつものように Moodle を利用します.授業当日の18:00から閲覧可能で,締切りは翌週月曜日の15:00です.
次回は関数・モジュールに関する確認テストを行いますので,準備をお願いします.
授業の内容はファイル処理ですが,せっかくなのでCSVファイルの取り扱いをメインに学習します.教科書には出ていない csv モジュールを使用しますので,Web 資料の方でそれについては説明します.