yuki_tsumi’s blog

主に備忘録&備忘録

PyQ 4日目終了

本日のハマった所

 

1.時刻の比較演算がわからなかった

f:id:yuki_tsumi:20170722162254j:plain

↑の7行目。

if 6 <= now.hour <14:

どうやって比較するのかわからず初めて解答をチラ見。

now.hourを使う事が出て来ないでdatetime.now()で比較してみたり、

datetime.time()で自分で時刻生成しようとしてみたりしたり、、、

 

 

 2.ファイル書き込み後の改行

問題的にはこんな感じ。

f:id:yuki_tsumi:20170722164857j:plain

 ほんで初期画面がこんな感じ。

f:id:yuki_tsumi:20170722164837j:plain

 それでとりあえずこんな感じに書き換え。

f:id:yuki_tsumi:20170722165106j:plain

これでオッケーだろ・・・と思って判定したらNG(´・ω・`)

output/working_days.logを見たら下の様になっており、改行されていない。

2016-07-112016-07-122016-07-132016-07-142016-07-15

f.write()って改行されないんだーなんて思いつつ下記のように修正したらエラー(´・ω・`)

f:id:yuki_tsumi:20170722165921j:plain

 エラー内容

File "working_days.py", line 8
f.write(work'\n')
                      ^
SyntaxError: invalid syntax

 あぁ・・・構文エラーね。

間違えて本当にすいませんでした。氏ね

と思いつつ変更してOKを貰いました。

f:id:yuki_tsumi:20170722170217j:plain

 

因みにPyQさんの解答は

f.write(work)

f.write()

 

 見たいな形でf.write()で改行していました(´・ω・`)どっちが良いのかな?

 

3.ファイルの書き込み

これは1時間位ハマった。。。

input/books.csvは1,500行程度。

正解のoutput/book_python.csvは189行。

問題

f:id:yuki_tsumi:20170722200350j:plain

 自分の解答

f:id:yuki_tsumi:20170722201323j:plain

 一見良さそうだけどこれが厄介でした・・・

初回だとこれでもオッケーなのだけど1行目に何か別のデータが有るとこれじゃダメ。

出力ファイルを見て「あーでもないこーでもない」自室で迷うこと1時間程。

とりあえずファイルを消そうということに落ち着いた()

それで出来たのが↓のコード。

f:id:yuki_tsumi:20170722201650j:plain

 はい。

我ながらksコードだと思います(´・ω・`)ww

 

因みに最初のコードを初見で入力し判定するとOKになります

(何回コードを実行してもOKです)

つまり'output/book_python.csv'が永遠と増えていく。

正答判定をしているっぽいコードを見たらどうやら188行以上だったらOKにするみたいです。

f:id:yuki_tsumi:20170722202515j:plain

 ちなみに模範

f:id:yuki_tsumi:20170722203546j:plain

 

リストに追加してそれを一つづつ取り出して書き込んでますね(´・ω・`)w

 

 

備忘録

・with open()のモード

r: 読み込み専用。省略可能(これまでのopen()はすべて読み込み専用です)

w: 書き込みするときに指定。ファイルが存在しない場合、新しいファイルが作られる。

x: ファイルが存在しない場合のみ、ファイルを作成し、書き込む。ファイルが存在する場合は何もしない。

a: 末尾に書き込み。ファイルが存在しない場合はファイルを作成し、書き込む。

・ファイル書き込み時は.write()で改行出来る

・コードの読みやすさ

自分の書いたコード。(実行速度0.35秒くらい)

f:id:yuki_tsumi:20170722220931j:plain

 模範解答コード。(実行速度0.15秒くらい)

f:id:yuki_tsumi:20170722221036j:plain

 毎度毎度.strftimeと.strptimeで変換している分遅くなっているのかなー?

模範解答の方が圧倒的に読みやすいな。。。

なるべくコメント入れて(自分でも)読みやすいコードになるように心がけよう。

 

 

気になった点

その1

出力が短いと動作の速度が気にならなかったけど、

出力が長いコードを試すと遅い。。。(処理に10数秒位かかる時も有り。)

動作を確認したい時にprintとかするとキツイ時がある。(breakで抜ければ良いんだけど)

 

その2

総合演習でいきなり知らないものが出てきたww

print("{}: {}".format(key, value)

.formatって何だよ(´・ω・`)ww

ちょっとコードの雰囲気が違うから別の人が作ったのかな?(´・ω・`)

 

 

 本日の進捗状況

 

f:id:yuki_tsumi:20170723034727j:plain

 

祝!Pythonはじめの一歩終了(・∀・)

4日目にして終了。

 

Score

f:id:yuki_tsumi:20170723035054j:plain