2017-02-27 63 views
0

私はスタックのオーバーフローをすべて見てきましたので、本当に助けが必要です。私は、誕生年を尋ね、誕生年が正しいことを検証することによって、年齢を計算するプログラムを作っています。単語やその他の無効なタイプの回答ではありません。そして今年から誕生年を引く。私は現在の年を入力し、それからユーザー入力の誕生年を差し引くことに問題があります。現在の年 - 誕生年を計算してPythonを使用して年齢計算を作成する

# Function Boolean is_valid_integer(String input_string) 
    # Declare Boolean is_valid 
    # 
    # is_valid = is input_string a valid integer? 
    # Return is_valid 
    # End Function 

    def is_valid_integer(input_string): 
     try: 
      val = int(input_string) 
      is_valid = True 
     except ValueError: 
      is_valid = False 
     return is_valid 

    # Function Integer get_year_born() 
    # Declare Boolean is_valid 
    # 
    # Display "What year were you born in? " 
    # Input input_string 
    # Set is_valid = is_valid_integer(input_string) 
    # While Not is_valid 
    #  Display "Please only enter whole years." 
    #  Input input_string 
    #  is_valid = is_valid_integer(input_string) 
    # End While 
    # input_integer = int(input_string) 
    # Return input_integer 
    # End Function 

    def get_year_born(): 
     input_string = input("What year were you born in? ") 
     is_valid = is_valid_integer(input_string) 
     while not is_valid: 
      input_string = input("Please only enter whole years. ") 
      is_valid = is_valid_integer(input_string) 
     input_integer = int(input_string) 
     return input_integer 

    # Function Integer calculate_difference() 
    # difference = 2017 - input_integer 
    # End Function 

    import datetime 
    def calculate_difference(difference): 
     difference = 2017 - input_integer 
     return difference 



    # Module calculate_age_year() 
    # Set born = get_year_born() 
    # Call calculate_difference() 
    # End Module 

    def calculate_difference(): 
     print("Your age is: ", difference) 

    calculate_age_year() 

データ型を自分のコーディングにインポートしようとしたが、正しく機能しませんでした。私は特定の日や時間を計算することもしていなかったので、提案されたコーディングの一部を削除しました。

このプログラムの私の目的は実際には年を計算することなので、2000年に生まれた場合、2017年から計算すると17歳になるはずです。

私の最初の機能は、誤った入力を無効にするループであり、2番目の機能は、ユーザが生まれた年を取得することであり、3番目の機能は、現在の日付とユーザの生年月日の差を計算し、第4の機能は、ユーザの実際の年齢を出力する。

+0

get_number_of_age()メソッドでは、減算を行わないでください。 age = current_yearはどこですか - input_integer ...あなたがやっているのはユーザー入力を返すことだけです。 – reticentroot

+0

は宿題のように聞こえる? 1)年齢を取得するステップにそれを壊す。 2)年齢を確認する3)それで何かをする。最初に個々のステップに焦点を合わせます。 – user1269942

+0

あなたの実際の試みを示してください。 「私が実際に何かの行に沿って何かを入力すると...」は、実際に何をしているのかわからないので、それを修正する方法を教えてくれません。現状では、 'today'は定義されていないので、" calculate_age_year() "を呼び出すとコードがクラッシュします。 –

答えて

0

Pythonで日付を操作するには、モジュールdatetimeを使用できます。

エラーを検証するには、try...catchを使用して日付入力に変換します。考えられるエラーをキャッチして、そこからエラー管理を行います。ここで

は簡単な例です。これにより

import datetime 


def print_age(): 
    year = raw_input('Enter your age (YYYY/MM/DD): ') 

    try: 
     year = [int(i) for i in year.split('/')] 
     birth_data = datetime.date(year[0], year[1], year[2]) 

     today = datetime.date.today() 
     time_diff = today - birth_data 

     print('Your age is: {} year and {} days'. format(
      time_diff.days // 365, time_diff.days % 365)) 
    except ValueError, KeyError: 
     # Do your error management here 
     print('Please use the format YYYY/MM/DD') 


print_age() 

TrueまたはFalseを返し、ループ内の関数を置くことは比較的簡単であるべき。ここで

編集

が誕生の彼の年のためにユーザーに確認し、その差を出力するコードの一部です:

import datetime 

year = None 
while year is None: 
    try: 
     user_input = raw_input('Enter your date of birth (YYYY): ') 
     year = int(user_input) 
    except ValueError: 
     print('Your did not enter a valid year!') 

print('You were born {} years ago'.format(datetime.datetime.now().year - year)) 

これは、しかし、今年の妥当性をチェックしません、 61241と入力すると、エラーは返されません。

希望する場合は、年の範囲を確認する確認のレイヤーを追加できます。

+0

ご協力いただきありがとうございますが、プログラムで特定の曜日や時間を計算することは望ましくありません。もう少し手伝ってもらえますか?私はあなたがそれを言及する前と後にdatetimeをインポートしようとしましたが、私はそれが間違って使用するかもしれないと感じるので、それは動作していないのですか?私はそれが動作すると思った方法でそれを追加しました(私が試した最後の方法は、私が投稿したものです)、それは動作しません。どんな助言も非常に役に立ちます! – andyhle95

+0

編集を確認することができます、達成しようとしているものに近いはずです。 –

+0

現在、まだ作業中です。これまでのご支援に感謝します。私の任命は本当にコード化するプログラムを選ぶことでした。私は、あなたが生まれた年を入力して、入力した年を計算し、現在の年を引いて(2017)年齢を計算する電卓を作成しました。 。残念ながら、入力、出力などのためにすべてがそれ自身のブロックを持っていなければなりません...これは私が今見たブロックを私のコードです。 – andyhle95

関連する問題