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.

【Python】日付を入力してもらうプログラムができました

Last updated at Posted at 2021-08-23

Pythonの標準ライブラリのみを使って
ユーザーに入力してもらった日付を ["2021","01","01"] みたいに扱えるようにするプログラムができました。
一度Qiitaに投稿してみたかったので、自分の運営しているサイトから誰が使うねん的な記事を持ってきてみました:)

  1. ユーザーに日付を入力してもらう
  2. 入力した日付をチェック
  • 整数であるか
  • 桁数に問題がないか
  • 入力した日付が未来の日付になっていないか
  • 存在しない日付となっていないか
  1. 問題がなければリスト形式で日付が返ってくる(例:["2021","01","01"]

といったプログラムのコードを書きました。

import datetime

def input_year():
# input_year では、年の入力をしてもらう
    inputyear = input("年(例:2021)を入力し、エンター ")

    
    """strptimeで入力した数値にエラーが発生するかどうかで、正しい形式の年が
    入力されたか確認を行う"""
    try:
        Check = datetime.datetime.strptime(inputyear,"%Y")
    except:
        print("4桁の整数で年を入力しましょう")
        return input_year()
            
    return inputyear

def input_month():
# input_month では、月の入力をしてもらう
    inputmonth = input("月(例:01)を入力し、エンター ")

    """strptimeで入力した数値にエラーが発生するかどうかで、正しい形式の月が
    入力されたか確認を行う"""
    try:
        Check = datetime.datetime.strptime(inputmonth,"%m")
    except:
        print("1~12のうちの整数で入力してください")
        return input_month()
            
    return inputmonth.zfill(2)

def input_day():
# input_day では、日の入力をしてもらう
    inputday = input("日(例:01)を入力し、エンター ")
    
    """strptimeで入力した数値にエラーが発生するかどうかで、正しい形式の日が
    入力されたか確認を行う"""
    try:
        Check = datetime.datetime.strptime(inputday,"%d")
    except:
        print("1~31のうちの整数で日を入力しましょう")
        return input_day()

    return inputday.zfill(2)

def input_date():
# input_dateを呼び出すと、年月日の入力をしてもらい、その年月日が未来の日付や
# 存在しない日付になっていないかのチェックを行ってから、問題なければ
# ['yyyy', 'mm', 'dd'] といったリスト形式で吐き出すようになっている

    print("年月日で入力しましょう")
    inputdate = []


    
    
    inputdate.append(input_year())
    inputdate.append(input_month())
    inputdate.append(input_day())

    try:
# date関数に入力された日付を差し込み、存在する日付を入力しているかのチェックに使った
        hikakuinput = datetime.date(int(inputdate[0]),int(inputdate[1]),
                int(inputdate[2]))
        hikakunow = datetime.date.today()
    except:
        print("存在しない日付を入力しています。最初から入力し直してください")


    if hikakunow > hikakuinput:
        pass
    else:
        print(inputdate[0] + "年" + inputdate[1] + "月" + inputdate[2] + "年")
        print("誤った日付が入力されたようです。最初から入力し直してください")
        return input_date()
    
    try:
        Check = datetime.datetime.strptime(inputdate[0] + inputdate[1] + inputdate[2],"%Y%m%d")
    except:
        print("誤った日付が入力されたようです。最初から入力し直してください")
        return input_date()

    return inputdate


a = input_date()
print(a)

Pythonの勉強始めてからまだ僅かなので、ツッコミどころがあったらぜひ教えて下さい!
誰が使うねんみたいなコードですが、もし使ってくれたら喜びます

0
0
2

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?