PyQ 4日目終了
本日のハマった所
1.時刻の比較演算がわからなかった
↑の7行目。
if 6 <= now.hour <14:
どうやって比較するのかわからず初めて解答をチラ見。
now.hourを使う事が出て来ないでdatetime.now()で比較してみたり、
datetime.time()で自分で時刻生成しようとしてみたりしたり、、、
2.ファイル書き込み後の改行
問題的にはこんな感じ。
ほんで初期画面がこんな感じ。
それでとりあえずこんな感じに書き換え。
これでオッケーだろ・・・と思って判定したらNG(´・ω・`)
output/working_days.logを見たら下の様になっており、改行されていない。
2016-07-112016-07-122016-07-132016-07-142016-07-15
f.write()って改行されないんだーなんて思いつつ下記のように修正したらエラー(´・ω・`)
エラー内容
File "working_days.py", line 8
f.write(work'\n')
^
SyntaxError: invalid syntax
あぁ・・・構文エラーね。
間違えて本当にすいませんでした。氏ね
と思いつつ変更してOKを貰いました。
因みにPyQさんの解答は
f.write(work)
f.write()
見たいな形でf.write()で改行していました(´・ω・`)どっちが良いのかな?
3.ファイルの書き込み
これは1時間位ハマった。。。
input/books.csvは1,500行程度。
正解のoutput/book_python.csvは189行。
問題
自分の解答
一見良さそうだけどこれが厄介でした・・・
初回だとこれでもオッケーなのだけど1行目に何か別のデータが有るとこれじゃダメ。
出力ファイルを見て「あーでもないこーでもない」自室で迷うこと1時間程。
とりあえずファイルを消そうということに落ち着いた()
それで出来たのが↓のコード。
はい。
我ながらksコードだと思います(´・ω・`)ww
因みに最初のコードを初見で入力し判定するとOKになります。
(何回コードを実行してもOKです)
つまり'output/book_python.csv'が永遠と増えていく。
正答判定をしているっぽいコードを見たらどうやら188行以上だったらOKにするみたいです。
ちなみに模範
リストに追加してそれを一つづつ取り出して書き込んでますね(´・ω・`)w
備忘録
・with open()のモード
r: 読み込み専用。省略可能(これまでの
open()
はすべて読み込み専用です)w: 書き込みするときに指定。ファイルが存在しない場合、新しいファイルが作られる。
x: ファイルが存在しない場合のみ、ファイルを作成し、書き込む。ファイルが存在する場合は何もしない。
a: 末尾に書き込み。ファイルが存在しない場合はファイルを作成し、書き込む。
・ファイル書き込み時は.write()で改行出来る
・コードの読みやすさ
自分の書いたコード。(実行速度0.35秒くらい)
模範解答コード。(実行速度0.15秒くらい)
毎度毎度.strftimeと.strptimeで変換している分遅くなっているのかなー?
模範解答の方が圧倒的に読みやすいな。。。
なるべくコメント入れて(自分でも)読みやすいコードになるように心がけよう。
気になった点
その1
出力が短いと動作の速度が気にならなかったけど、
出力が長いコードを試すと遅い。。。(処理に10数秒位かかる時も有り。)
動作を確認したい時にprintとかするとキツイ時がある。(breakで抜ければ良いんだけど)
その2
総合演習でいきなり知らないものが出てきたww
print("{}: {}".format(key, value)
.formatって何だよ(´・ω・`)ww
ちょっとコードの雰囲気が違うから別の人が作ったのかな?(´・ω・`)
本日の進捗状況
祝!Pythonはじめの一歩終了(・∀・)
4日目にして終了。
Score