パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Python 千葉大の問題を1行で行う技術 テキストデータ読み込み 5番目に長寿の都道府県

2023-05-10 | 新規1000万人ぐらいにプログラムをマスターしてもらいたい

千葉大学共生応用化学コース後期に開講されている「コンピューター処理」のサイトが公開されていました

講義情報 — コンピューター処理 ドキュメント

 

その中の

6章のクイズQ2を1行で答えるまでの話

 

問題は

このテキストデータを読み込んで5番目に長生きの都道府県名を答える

 

最初に作ったのはこんな感じ 正しくは最後の行はprint(sorted(d)[-5][1])

 

lines = open("lifetime.txt").readlines()
d=[]
for l in lines:
    p=l.replace("  "," ").replace("  "," ").replace("  "," ").split()
    if len(p)==2:
        d+=[(float(p[1]),p[0])]
print(sorted(d))

 

これを1行のプログラムにしていきます

ファイル名.pyでなくてもOKなんですか

 

 

テキストデータ 年数のあとにスペースとか改行が入っていて少し苦戦

年数は常に7からはじまることを利用してなんとかうまくできました

 

制作過程

まずベタなもの

次に少しずつまとめたものを作成

最後に1行化

 

print(sorted([(l[l.find("7"):],l) for l in open("lifetime.txt").readlines() if l.count(" ")>0])[-5][1].split()[0])

 

説明

11行目 ファイルを読み込み、行にスペースがあるものを対象に、その行にある7以降とその行をタプルのリスト化

12行目 昇順でソートして最後から5つ目のタプルの1 行全体の項目をスペースで分割してその最初にある都道府県名を表示

15行目 11と12を一行にしたもの


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。