通过计算当前年份 - 出生年份

时间:2017-02-27 01:18:05

标签: python pseudocode

我看了遍布堆栈溢出,所以我真的需要帮助。我正在制作一个计划,通过询问他们的出生年份来计算一个人的年龄,确认他们的出生年份是正确的,如整数,而不是单词或任何其他无效类型的答案。然后从当前年份中减去出生年份。我在输入当前年份时遇到了麻烦,并从中减去用户输入的出生年份。

    # 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岁了。

我的第一个函数是使输入无效的循环,第二个函数是获取用户出生的年份,第三个函数应该是计算当前日期和用户出生日期之间的差异,以及第四个函数输出用户的实际年龄。

1 个答案:

答案 0 :(得分:0)

要使用Python中的日期,您可以使用模块datetime

要验证错误,pythonic的做法是使用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()

有了这个,返回TrueFalse并将函数放在循环中应该相对简单。

修改

这是一段代码,询问用户他的出生年份并打印出差异:

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但不会检查年度的有效性,但不会返回错误。

如果您愿意,可以添加一层检查年份范围的验证。