Let’s start Python #1 に参加して学んだこと!

Webプログラミング

Let’s start Python #1 に参加してきました!

6月上旬に Let’s start Python #1 に参加してきました!

下記内容で、Pythonを0から勉強するシリーズです。今業務でFlask(Pythonのマイクロフレームワーク)を使っているのである程度の経験はあったのですが、スクレイピングは興味あるものの他の言語でもやったことがなく、また、WebフレームワークRailsを一通り学習したのでそれでいいかなと思ってましたが、せっかく業務でPythonを使っているので、これを機にDjangoも勉強してみようかなと思い、今は全部参加してみようと思っています。

No内容時期
#1実行方法、リスト・タプル・辞書、if文・for文6月
#2スクレイピング7月
#3関数・クラス8月
#4フレームワーク(Django) Part19月
#5フレームワーク(Django) Part210月

初回はさすがに知っていることだけかなと思ってましたが、下記資料の最後の多重ループの応用問題がいい勉強になりました。

以下のように、for文の中でfor文を回すことを多重ループといいます。

$ cat loop.py
#!/usr/bin/python3

l1 = [1, 2, 3]
l2 = [10, 20, 30]

for i in l1:
    for j in l2:
        print(i, j)

$ ./loop.py		# 実行
1 10
1 20
1 30
2 10
2 20
2 30
3 10
3 20
3 30

応用問題

下記のように、1日が月曜日で31日までを”日にち 曜日”で出力してください。

1 月曜日
2 火曜日
3 水曜日
:

 

私の回答

3週間前なのでだいぶ忘れてしまいましたが、下記のような回答だったと思います。冗長なプログラムで悪い例ですが、これが一番簡単に思いつくんですよねー。ここからリファクタリングができずに時間がきて終了。。

$ cat week.py
#!/usr/bin/python3

for i in range(1,32):
    if i % 7 == 1:
        print("%d 月曜日"%i)
    if i % 7 == 2:
        print("%d 火曜日"%i)
    if i % 7 == 3:
        print("%d 水曜日"%i)
    if i % 7 == 4:
        print("%d 木曜日"%i)
    if i % 7 == 5:
        print("%d 金曜日"%i)
    if i % 7 == 6:
        print("%d 土曜日"%i)
    if i % 7 == 0:
        print("%d 日曜日"%i)

$ ./week.py		# 実行
1 月曜日
2 火曜日
3 水曜日
  :
30 火曜日
31 水曜日

 

3週間後に再チャレンジ

1週間を配列に入れて、週の最後になったらリセットしてみたいな回答だったのを思い出しながら再度作成。悪くないんじゃないでしょうか。あと1週間もしてたら忘れてたと思うので、今復習しておいて良かった~!

業務でも、時間の都合で似たような状況のままレビューに進むこともあり、当然指摘されます。このあたりのコードをさらっと書けるようになれるかどうかが、いいプログラマになれるかどうかの一つの分岐点みたいです。

$ cat week.py
#!/usr/bin/python3

week = ["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]

n = 0
for i in range(1,32):
    print("%d %s"%(i,week[n]))
    n += 1
    if n == 7:
        n = 0

$ ./week.py		# 実行
1 月曜日
2 火曜日
3 水曜日
  :
30 火曜日
31 水曜日

 

正式回答

day_list = ["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]

count_no = 0
for index, i in enumerate(range(1,32)):
    if index % 7 == 0:
        count_no = 0
    else:
        count_no += 1
    print("%d %s"%(i, day_list[count_no]))

※ 上下左右ボタンでページが切り替わります。
主催者の方の資料:GitPitch Slide Deck

タイトルとURLをコピーしました