2017-02-27 6 views
0

나는 스택 오버플로가 넘쳐 보았고 정말 도움이 필요합니다. 나는 그들의 출생 연도를 물어서 나이를 계산하고, 출생 년도가 올바른지, 전체 숫자인지, 단어 나 다른 잘못된 유형의 답이 아닌지를 확인하는 프로그램을 만들고 있습니다. 그리고 나서 우리의 당해 연도로부터 출생 년도를 빼십시오. 현재 연도를 입력하고 사용자 입력 출생 연도를 빼는 데 문제가 있습니다.현재 연도 - 출생 연도를 계산하여 파이썬을 사용하여 연령 계산기 만들기

# 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 세가 될 것입니다.

첫 번째 함수는 거짓 입력을 취소하는 루프이고 두 번째 함수는 사용자가 태어난 연도를 구하고 세 번째 함수는 현재 날짜와 사용자 생년월일의 차이를 계산하는 것으로 가정합니다. 상기 제 4 기능은 상기 사용자의 실제 나이를 출력하는 기능을 포함한다.

+0

get_number_of_age() 메소드에서 뺄셈을하지 마십시오. age = current_year - input_integer는 사용자 입력을 반환하는 것입니다. – reticentroot

+0

은 숙제를 좋아하니? 1 단계) 나이를 얻으십시오. 2) 3 세 유효성 확인) 그것으로 무엇인가하십시오. 먼저 개별 단계에 집중하십시오. – user1269942

+0

실제 시도해보기. "실제로 내가 줄을 따라 뭔가를 입력 할 때 ..."는 당신이 실제로하고있는 것을 보여주지 못하기 때문에 우리는 그것을 고칠 방법을 말할 수 없습니다. 'today'는 정의되어 있지 않으므로 calculate_age_year()를 호출하면 코드가 충돌합니다. –

답변

0

파이썬에서 날짜를 사용하려면 모듈 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