見出し画像

【開始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の環境構築

この記事が気に入ったらサポートをしてみませんか?