0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

freeCodeCampでPythonの勉強 part2

Posted at

Scientific Computing with Pythonの続き

freeCodeCampでコツコツPythonを勉強しています。
前回の記事では、Python for EverybodyArithmetic Formatterに挑戦しました。今回はTime Calculatorに挑戦します。

  • Python for Everybody
  • Scientific Computing with Python Projects
    • Arithmetic Formatter
    • Time Calculator(今回はここ)
    • Budget App
    • Polygon Area Calculator
    • Probability Calculator

2問目:Time Calculator

最終的に欲しいものはadd_timeメソッドで、動きは以下の通り

add_time("3:00 PM", "3:10")
# Returns: 6:10 PM

add_time("11:30 AM", "2:32", "Monday")
# Returns: 2:02 PM, Monday

add_time("11:43 AM", "00:20")
# Returns: 12:03 PM

add_time("10:10 PM", "3:30")
# Returns: 1:40 AM (next day)

add_time("11:43 PM", "24:20", "tueSday")
# Returns: 12:03 AM, Thursday (2 days later)

add_time("6:30 PM", "205:12")
# Returns: 7:42 AM (9 days later)

実装方針

  • 第一引数をdatetimeに変換し、第二引数は:で時間と分に分けて足していく。
  • 曜日に関しては前処理で大文字+小文字に変換する(tueSdayなどがあったため)。
  • 出力の中の括弧内の文字は、第一引数で入力した時間との日付の差分を計算し、1以下と1より大きい時で分ける。

個人的ポイント: 曜日を含めた日時の受け取り

日時と文字列を相互に変換するメソッドとして

  • strptime(): 文字列 -> 日時への変換
  • strftime(): 日時 -> 文字列への変換

があります。strftime()では%A%aなどの書式化コードを使うことで曜日を出力することができます。また、AM/PMのような12時間表の場合も%pという書式化コードがあります。

import datetime

dt = datetime.datetime(2020, 7, 13)
print(dt.strftime('%A, %a'))
# Monday, Mon

しかし、strptime()では曜日を%aなどで受け取ることができませんでした。(年月が決まらないと曜日なんてわからないからね…)

import datetime

dt_str = "7:49 Wednesday"
format = "%H:%M %A"
dt = datetime.strptime(dt_str, format)

print(dt.strftime("%H:%M %A"))
# 07:49 Monday

そこで、曜日のリストを作って実装をしてみました。

weeks = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

def get_week_by_diff(week, diff):
    index = weeks.index(week)
    target_index (index + diff) % len(weeks)
    return weeks[target_index]

最後に

前回の問題より簡単だった気がした。

次の問題はBudget Appです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?