私はちょうどコンピュータサイエンスの勉強を始めました。私はPython 3と一般的なコーディングにはとても新しいです。私たちの最初の任務は、Zellers Congruenceを使って曜日を計算することです。私が書いたコードに関していくつか質問があります。Zeller's Congruenceを使用している曜日 - Python 3
year = int(input("Year: "))
while not int(year) in range(1583, 10000):
year = input("Out of allowed range 1583 - 9999. Please enter a valid
number: ")
month = int(input("Month: "))
while not int(month) in range(1, 13):
month = input("Out of allowed range 1 - 12. Please enter a valid number: ")
if month == 1 or month == 2:
month += 12
year -= 1
day = int(input("Day: "))
while not int(day) in range(1, 32):
day = input("Out of allowed range 1 - 31. Please enter a valid
number: ")
result = (day + 13 * (month+1) // 5 + year + year // 4
- year// 100 + year // 400) % 7
weekday = {0: "Saturday",1: "Sunday", 2: "Monday",3: "Tuesday",4:
"Wednesday",5: "Thursday",6: "Friday"}
print("The day is " + weekday[int(result)] + ".")
まず、曜日の範囲が正しい月に関連していることを確認する必要があります。たとえば、月の入力が1,3,5,7,8,10または12の場合、1日の間隔は1〜31でなければなりません。月の入力が4,6,9、または11の場合、1日の間隔は1〜 30。最後に、うるう年も考慮する必要があります。そして、私はこれらの要件を書く方法を理解することはできません。
また、すべての批判を歓迎します。これはまあまあではないことを知っていますので、私がより良くできることを教えてください!
「私は、その日の範囲が正しい月に関連していることを確認するはずです。 [1、3、5、7、8、10、12]:valid_days = range(1,32)elif month in [4,6,9,11]:valid_days = range(1、31) ) – BoboDarph
私はちょうどこれを通って言うだろう:https://www.codecademy.com/learn/learn-pythonおそらく簡単にハードコード化することができます – sniperd
それはうるう年かどうかを確認するには年は4で割り切れ、400で割り切れますが100では割り切れない場合は、次のように1ライナーで指定できます:is_leap = year%4 == 0 and(year%100!= 0またはyear%400 = = 0) – BoboDarph