用Python写一个能算出自己年龄的小程序。

其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理我写代码的思考过程。

首先导入我们这个程序中需要的datetime库。

import datetime

算年龄

在算年龄之前,我们先要知道两样东西。第一个是用户的生日,第二是现在的日期

用户的生日让用户输入就行, 保存到birthday里面:

birthday = datetime.date( # 输入生日

year=int(input('请输入你的出生年份:')),

month=int(input('请输入你的出生月份:')),

day=int(input('请输入你的出生日期:'))

)

现在的日期也很好求:

today = datetime.date.today() # 现在的日期

然后怎么办呢?我发现两个date对象之间可以相减,这下就好办了,直接把today和birthday相减得到的天数除以365就能得到年龄了。因为得数精度太高,舍入到了第7位。

age = round((today - birthday).days/365, 7)

# 今天的日期与生日相减的天数除以365得出年龄

最后就可以输出啦。

print(f"今天是{today.year}年{today.month}月{today.day}日")

print(f"你今年大约{age}岁了!")运行结果

成功了。

计算还要多久过下一次生日

我们的程序功能好像有点单调了,添加一个计算还要过多久才能过下一次生日的功能吧。

首先我们要知道下一次过生日是什么时候。

生日的月份和日期是不变的,变的是年份。年份是今年或明年,可以从today变量里面获取,月份和日期可以可以从birthday中获取。因为birthday的变量名已经用过了,所以下一次过生日的时间就存在birth里面吧。

birth = datetime.date( # 最近的生日

year=today.year, # 今年

month=birthday.month,

day=birthday.day

)

然后输出:

print(f"距离你的生日还有{(birth - today).days}天")

但如果你真这么写就会出bug:出了一个bug

为什么会出bug呢?

原来还有一个地方没考虑,就是如果生日今年已经过了,那么下一次过生日就是明年了。所以要在后面增加一个判断条件:

if birth < today: # 如果今年过过了

birth = datetime.date(

year=today.year+1, # 算明年的

month=birthday.month,

day=birthday.day

)

这样子就对了

结尾

附上这个有趣的程序的完整源代码:

import datetime

birthday = datetime.date( # 输入生日

year=int(input('请输入你的出生年份:')),

month=int(input('请输入你的出生月份:')),

day=int(input('请输入你的出生日期:'))

)

today = datetime.date.today() # 现在的日期

age = round((today - birthday).days/365, 7)

# 今天的日期与生日相减的天数除以365得出年龄

birth = datetime.date( # 最近的生日

year=today.year, # 今年

month=birthday.month,

day=birthday.day

)

if birth < today: # 如果今年过过了

birth = datetime.date(

year=today.year+1, # 算明年的

month=birthday.month,

day=birthday.day

)

print(f"今天是{today.year}年{today.month}月{today.day}日")

print(f"你今年大约{age}岁了!")

print(f"距离你的生日还有{(birth - today).days}天")

如何用python计算年龄_用Python写一个能算出自己年龄的小程序相关推荐

  1. python写一个表白程序_用Python写一个能算出自己年龄的小程序

    用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...

  2. 用python计算圆周率_用python计算圆周率π

    原博文 2020-03-22 15:32 − 用python计算圆周率π 一.要求 1.要起义能计算到圆周率后面越多位越好. 2.用进度条显示计算的进度,能给出越多种进度条越好. 3.要求给出圆周率π ...

  3. python计算时间装饰器_python 写一个计算运行时间的装饰器

    面试题之中的一个. 写一个装饰器wraps,它接收一个參数t.假设函数运行时间超过1秒,输出"bad",否则输出"goods". 首先,计算函数的运行时间: i ...

  4. python计算条件概率_用Python实现贝叶斯定理(附代码)

    写作说明 上一期我们讲了贝叶斯分类器,其中有很多的概率基础知识和贝叶斯定理.但是讲解的很没有重点,前半部分讲的是贝叶斯基础知识,最后很突兀的插进来一个文本分析-贝叶斯分类器.很多童鞋看到很累.其实上一 ...

  5. python计算圆周率_用python计算圆周率Π

    一.要求: 1.计算到圆周率后面越多位越好. 2.用进度条显示计算的进度. 3.要求给出圆周率Π的具体计算方法和解释. 二.算法: 1.拉马努金公式: 2.高斯-勒让德公式: 设置初始值: 反复执行以 ...

  6. python计算信息增益_利用Python提取ABAQUS的计算结果(ODB)信息、体积、应变等变化(一)...

    00 实例模型 一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移.体积.应变随加载时间的变化情况. 图1 金属长方体约束加载示意图 01 Py ...

  7. python计算协方差_在Python中计算协方差

    要计算协方差,您需要类似下面这样的内容,它有一个嵌套循环,遍历每个列表,并使用协方差公式累积协方差.在# let's get the mean of `X` (add all the vals in ...

  8. python计算坡度_基于python实现利用DEM数据计算坡度、坡向

    1.Python的地形三维可视化--简介Matplotlib和gdal https://blog.csdn.net/allenlu2008/article/details/51880333 2.Pyc ...

  9. python计算三角函数_使用Python三角函数公式计算三角形的夹角案例

    使用Python三角函数公式计算三角形的夹角案例 题目内容: 对于三角形,三边长分别为a, b, c,给定a和b之间的夹角C,则有:.编写程序,使得输入三角形的边a, b, c,可求得夹角C(角度值) ...

最新文章

  1. QIIME 2教程. 23图形界面q2studio(2020.11)
  2. java多线程-死锁的一些问题
  3. java 判断二叉树是否平衡_剑指Offer - 判断二叉树是否是平衡二叉树
  4. 对话实录 | 看华为云如何使能AI计算行业创新
  5. RDB和AOF速度测试
  6. th:text为null报错_为什么建议你用nullptr而不是NULL?
  7. 百万年薪大佬熬夜写作,Python高级编程之反爬虫及应对方案
  8. 使用通达信软件接口选股的时候,如何进行条件设置?
  9. springboot+redis实现文章浏览量记录
  10. POJO, VO什么的是个什么鬼?
  11. Frank Pfenning
  12. mysql实习报告总结_MySQL数据库实训报告 实训心得
  13. postgresql -- 绑定变量窥视规则
  14. 天齐锂业通过聆讯:将实现“A+H”两地上市,募资主要用来还债
  15. [附源码]java毕业设计归元种子销售管理系统
  16. Linux定时任务工具crontab详解及系统时间同步
  17. 如何让笔记获得更多曝光量?小红书曝光机制是怎样的
  18. 2977:生理周期(枚举)
  19. 4.25分享(贪心算法基础)
  20. 软件工程专业就业前景如何 这个几个误区要了解

热门文章

  1. 作为产品经理的你,画原型图时崩溃过吗?
  2. 北京的房租到底有多高?
  3. 【MATLAB教程案例50】通过VisualSFM工具箱提取360度等间隔环绕拍摄得到的图像序列点云数据,并进行目标三维重建matlab仿真
  4. 新奥创:多APP场景端到端的技术体系探索与突破
  5. docker: error pulling image configuration:timeout
  6. 重写equals方法
  7. 硬盘测试软件cry,CrystalDiskMark测试硬盘官方版
  8. GPU服务器的上手使用-小试牛刀
  9. Chart-制作饼图
  10. 如何回复客户英文邮件