通过计算当年 - 出生年份使用python创建年龄计算器
我已经查看了所有堆栈溢出,所以我真的需要帮助。我正在制定一个程序,通过询问他们的出生年份来计算一个人的年龄,验证他们的出生年份是正确的,如整数,而不是单词或任何其他无效类型的答案。然后减去当年的出生年份。我在输入当前年份并从中减去用户输入的出生年份方面遇到了问题。通过计算当年 - 出生年份使用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()
尝试将datatime导入到我的编码中后,效果不佳。我也不想计算具体的日期和/或时间,所以我删除了那些建议编码的部分,可能与它有关系?
我对这一计划的目的是真的才算年,所以如果我出生在2000年,我希望该计划从2017年计算,这意味着我会是17岁截至目前。
我的第一个功能是使虚假输入无效的循环,第二个功能是获取用户出生的年份,第三个功能应该是计算当前日期和用户出生日期之间的差异,以及输出用户的实际年龄的第四功能。
要在Python中的日期时,您可以使用该模块datetime
。
为了验证错误,做的Python的方式是使用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,它不会返回错误。
如果您愿意,您可以添加一个验证层来检查一年的范围。
谢谢你的帮助,但是我不希望程序计算特定的日期或时间,仅仅是一年。你能帮我多一点吗?我已经试过在你提到它之前和之后导入日期时间,但我觉得我可能会使用它错误,所以它不工作?我已经按照我认为它会工作的方式添加了它(我尝试的最后一种方法是我发布的最新方式),并且它不起作用。任何建议将非常有帮助! – andyhle95
你可以检查编辑,它应该更接近你想要实现的。 –
目前仍在努力,感谢您的帮助。我的任务是选择任何一种程序来真正编码,我选择编写一个计算器,通过计算出生年份(输入),并从当前年份(2017年) 。不幸的是,一切都必须有它自己的块,输入,输出等...这是我现在的代码,如果你可以看一看,让我知道吗? – andyhle95
在你的get_number_of_age()方法中,你没有做任何减法。 age = current_year - input_integer ...你所做的只是返回用户输入。 – reticentroot
听起来像功课?分解成步骤1)获得年龄。 2)验证年龄3)用它做一些事情。首先关注各个步骤。 – user1269942
显示你的实际尝试。 “当我实际上输入某些东西时......”并没有向我们展示你实际上在做什么,所以我们不能告诉你如何解决它。就目前而言,'today'没有定义,因此调用“calculate_age_year()”时代码崩溃。 –