Python入門 数当てゲーム

import random
import time

low = 1
high = 200
answer = random.randint(low, high)
count = 0
start_time = time.time()
print(f'{low}から{high}の数を当ててください。')

while True:
    print('')
    print('入力してください > ', end='')
    guess = int(input())
    count += 1
    if answer > guess:
        print('答えはもっと大きいです。')
    elif answer < guess:
        print('答えはもっと小さいです。')
    else:
        print('正解です。')
        break

end_time = time.time()
print(f'{count}回で正解しました。')
print(f'{int(end_time - start_time)}秒で正解しました。')

LibreOfficeで文字列を日付に変換する

f:id:collatz:20220315112516p:plain

A列に日付を表す文字列を入力する。

変換できた文字列の例

1月1日
01月01日
2022年1月1日
2022年01月01日
2022/1/1
2022/01/01
1-1
01-01
2022-01-01
B列に「DATEVALUE」関数を入力する

引数はA列にする
例:B1セルならば「=DATEVALUE(A1)」
これにより、日付文字列がシリアル値に変換される

B列の値をコピーして、C列に数値として貼り付ける

「形式を選択して貼り付け」→「数値」

C列のセルの書式設定を日付に変える

Pythonのopenpyxlで取得したエクセルのセルのタプルをmapで値のリストに変換する

エクセルファイルの1行目のデータを取得して、
その中の各セルオブジェクトの値(valueプロパティ)のリストを作成する

import openpyxl

wb = openpyxl.load_workbook('example.xlsx')
ws = wb.active

a = list(map(lambda x: x.value, ws[1]))
print(a)

wb.close()

PythonのopenpyxlでExcelファイルのデータを1行ずつ処理する

1行目がタイトル行だと仮定して、2行目から処理する

import openpyxl

wb = openpyxl.load_workbook('example.xlsx')
ws = wb.active

for row in ws.iter_rows(min_row=2):
    print(row[0].value)

wb.close()

Pythonのwith文で複数のファイルを開く

「input.txt」の内容を「output.txt」に書き込むプログラム

with (open('input.txt') as file_input,
      open('output.txt', mode='w') as file_output):
    for row in file_input:
        file_output.write(row)

withの後に()を書いて、その中に複数のopenを書く方法はPython3.9から使えるようになったそうです。
www.python.jp

以前はバックスラッシュ「\」を使って、下記のように書く必要があったそうです。

with open('input.txt') as file_input, \
     open('output.txt', mode='w') as file_output:
    for row in file_input:
        file_output.write(row)

プログラミングで学べるもの

失敗をすることの大切さ

プログラミングに限らず、
私たちは失敗したほうが早く成長すると思います。

プログラミングは失敗しながら完成させることが多く
失敗によって成長することを実感しやすいと思います。

また、失敗をしても損害が小さいので
失敗の大切さを学ぶのに適していると思います。

よくわからないものとの向き合いかた

プログラミングをやっていると
普段あまり使わない考え方とか、
コンピュータの仕組みに
出会うことになります。

そういった、よくわからないものでも、
時間をかければ理解することができます。

そういう経験によって、
よくわからないものは、すぐにはわかるようにならないが、
時間をかければわかるようになるという経験ができます。

自分でやれることは自分でやってみようという気持ち

プログラミングを勉強すると
少しずつ自分でできることが増えてきます。

その結果、専門家にすべて任せるのではなく、
自分でやれることは自分でやってみよう
という気持ちがわいてきます。

他人と協力するときに大切なもの

プログラミングの世界で他人と協力する場合、
自分のプログラムを他人に再利用してもらう必要があります。

再利用してもらうには、
小さく部品化する、使いやすくする、
抽象度を上げて、汎用性を高める
などが必要になります。

そういう考え方は、他人と協力したり組織を作るときに
役に立つのではないかと思います。

楽をするために苦労することの大切さ

プログラミングを始めると、
最初のうちは勉強に時間がかかる割に
それほど役に立つものが作れないので、
損をすることになります。

しかし、能力が上がれば、
短い時間で役に立つプログラムをかけるようになり、
得をするようになります。

この経験により、
勉強は将来への投資であることが
実感できると思います。

PopplerでPDFファイルの1ページ目を削除する

編集前のファイル名: in.pdf
編集後のファイル名: out.pdf
編集前のファイルのページ数: 99ページ以下
もし、ページ数が3桁であれば、「%03d」とする。
分割したファイルの名前(02.pdf, 03.pdf, ...)の数字の部分の桁数を揃えておかないと
結合するときのページの順番が不正になる。

Popplerのインストール
$ sudo apt install poppler-utils
in.pdfの2ページ目から最後のページまでをページごとに分割してファイルに保存する
$ pdfseparate -f 2 in.pdf %02d.pdf

編集前のファイルを削除する
(この後、ファイルを結合するときに、
ディレクトリ内のすべてのファイルを対象にするので、
編集前のファイルが結合対象にならないようにするため)

$ rm in.pdf

ディレクトリ内のすべてのファイル(分割したファイル)を結合して、
out.pdfとして保存する

$ pdfunite * out.pdf