【開始21日目】プログラミング学び日記_Python
このnoteは、31歳/文系/未経験/一児の父が、エンジニアを目指して勉強していく記録を綴っているものです。現在はAdTechでカスタマーサクセスを担当しつつ、色んなチャンスに恵まれ、CS業務や育児と並行しながらチャレンジしています。
これからプログラミングを始める方にとってのTipsやモチベアップに繋げられるように頑張りたいと思っています。
--------------------------------------------
今日は通勤時、始業前、終業後にそれぞれインプットしました。通勤時はプロゲートの復習や書籍を中心に、始業前はササっとできるコードの問題集を、終業後はコードの問題で分からなかった部分の解消や、がっつり取り組む書籍の演習系を進めました。
今日やったこと
・Paizaの問題集(50分)
・基礎からのMySQL(60分)
・Pythonデータベースプログラミング入門(50分)
・アプリ版プロゲートの復習(20分)
・本記事の執筆(30分)
合計:210分
学んだこと
まずPythonのfor文の使い方で、また新しいパターンを学びました。「0000542.400」のような数字の列を「542.4」という数値として正しい形に変換する方法です。以下コードはPaiza問題集からの引用です。
s = input() # インプットされる数字
if "." not in s: # 小数点が無ければintで整数に変換できる
print(int(s))
else:
ans = "" # 答えを入力していく箱を作る
start = 0 # 左側の0を削除するため、0以外の数字が始まる位置を特定する
for i in range(len(s)):
if s[i] != "0": # 0以外の数字がスタート位置と判定され、breakで処理が止まる
if s[i] == ".":
ans += "0" # 「.」で始まる場合は最初に0を入れておく
start = i
break
last = 0
for i in range(len(s)):
if s[i] != "0": # 0以外なら終了位置と判定する、というのを最後の文字まで繰り返す
last = i # こちらはbreakしないので、lastには0ではない最後の文字の位置が代入された状態で繰り返しが終わる
first_dot = s.find(".") # 「.」が複数ある場合は最初の.を採用する
for i in range(start, last + 1):
if s[i] != ".":
ans += s[i]
elif i == first_dot:
ans += s[i]
print(ans)
最初は中々理解できませんでしたが、一つずつかみ砕いて、自分でコードを模写してみることで何とか腹落ちしました。また一つ引き出しを増やせたと思います。
MySQLの方は、テーブルを色々と改造してみてました。主キーが自動入力される「AUTO_INCREMENT」では、一度データを入力して、それを全て削除して、その後にデータを追加した場合、削除したデータの続きとしてキーが振られたのが印象的でした(もちろんリセットする方法もあります)。
また、各カラムにDEFAULTの値を設定できるのも面白かったです。例えば氏名を入力する欄が空欄なら「氏名未入力」とするような使い方ができます。
現在の業務ではDBから抽出されてきたデータを直接加工しているので、抽出されて来る前の、裏側でなされている処理が少しずつ見えてきてとても面白いです。
明日もがんばりましょう!!!
これまで修了したコース等
【Paiza】
文字列処理メニュー 25/30問(83%完了)
配列活用メニュー 10/26問(38%完了)
Bランクレベルアップメニュー 62/62問
Cランクレベルアップメニュー 30/30問
ランクB合格
ランクC合格
【書籍/ブログ】
京大のPython教科書 116/201頁(58%完了)
基礎からのMySQL 101/514頁(20%完了)
Pythonデータベースプログラミング 62/194頁(32%完了)
Pythonエンジニアファーストブック読了
【Progate】
Python Ⅰ~Ⅴ
Python アプリ版 コースⅠ~Ⅴ
SQL Ⅰ~ Ⅳ
HTML&CSS 初級編
【その他】
VSCodeの環境構築
Anacondaの環境構築
MySQLの環境構築
この記事が気に入ったらサポートをしてみませんか?