用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)

这样子就对了

结尾

附上datetime库的官方文档:datetime --- 基本的日期和时间类型https://docs.python.org/zh-cn/3/library/datetime.html

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

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. 判断 小程序_第五届美亚杯赛前必备:从案情资料到小程序解题

    2019年11月11日 首届电子数据取证小程序大赛 截止投稿啦 同时 "美亚杯"第五届中国电子数据取证大赛 将于11月16日 正式拉开序幕 届时有小伙伴会使用取证小程序来解答吗美美 ...

  3. input层级高 小程序_获客、引流成本越来越高?开发小程序:低成本获客、引流...

    在最近几年时间中,各行各业都有不少企业.商家反应:获客成本越来越高.对此,小编的建议是:去开发一个微信小程序.这是为什么?下面将让带着丰富小程序开发以及运营经验的,来自上海数字商圈的产品经理,给大家做 ...

  4. 云服务器定时启动程序_过去、现在和未来:开发一款微信小程序的技术迭代全过程...

    2019 年 10 月 19 日,由腾讯云与微信小程序团队联合举办的"小程序·云开发"技术峰会在北京召开.23 万小程序·云开发注册账户,50 多万开发者上手使用,这是腾讯云与微信 ...

  5. python登录微信pc版_微信PC版2.9.0测试版更新:新增小程序面板

    3月26日讯,近日,腾讯微信团队推送了微信PC版2.9.0的公共测试更新,此次更新增加了不少实用功能,对过往的许多痛点也有所改进,个人非常期待微信2.9.0版本的正式更新. 作为国民级的通讯产品,腾讯 ...

  6. 温度转换java小程序_利用easygui模块编写的华氏温度与摄氏温度转换的小程序

    -*- coding:utf-8 -*- #Author:'Lmc' #DATE: 2019/4/23/0023 下午 4:23:08 #FileName:tem_compare_gui.PY imp ...

  7. 随机抽人名小程序_篮球还可以这样玩?推荐你3个篮球趣味游戏小程序

    篮球是男生都喜欢的运动项目之一吧,那么关于篮球的游戏你们是不是也很喜欢呢?下面是小编为你们带来的3个篮球趣味游戏小程序,希望你感兴趣哦! 1.篮球投投投 篮球投投投是一款休闲娱乐的微信小程序,游戏简单 ...

  8. 课堂经验值管理小程序_实时上传 规范管理 湖北首个村务管理小程序正式上线...

    10月10日,湖北省首个村务管理小程序--"村助手"微信小程序在武汉正式上线.今后,村干部只需要一部智能手机就可以实时完成村务工作规范化记录和储存. 活动现场 "你看,我 ...

  9. tabbar角标 小程序_【沃行课堂】恭喜你遇到“坑”,小程序踩坑指南

    上周我们的开发小哥哥带领我们一起领略了开发中遇到的各种问题,以及基于SaaS模式的平台技术架构及实现.本周我们换个方向,由高级开发工程师秋哥带领大家共同探讨下小程序开发中踩过的坑.秋哥会从公司的几个小 ...

最新文章

  1. DVWA系列之1 环境搭建
  2. SAP CRM和Cloud for Customer的UI界面皮肤更改
  3. linux oops产生原理,kernel panic , Oops 等cpu异常的分析与定位
  4. 世界上第一个手机是怎么诞生的?谁是第一个用手机的人?
  5. Hive报错java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
  6. NLP 算法工程师的学习、成长和实战经验
  7. 五笔输入法的学习记录
  8. 通信专业实务(中级)
  9. 关于CMOS摄像头的DVP接口的工作方式与一般使用方法
  10. SPSS数据分析常见问题(差异性研究)
  11. 基于双服务器的抗关键词猜测攻击的公钥可搜索加密方案
  12. 包包各部位名称图解_手袋各部位名称
  13. DZone每日必读-News:2022 年 Java 开发:预测和选定趋势
  14. Mac M1 搭建虚拟机节点集群过程及软件分享
  15. Win7系统专业版调整屏幕亮度的详细教程--win7w.com
  16. eclipse32位安装教程_Mastercam X6/(32位、64位) 软件安装教程
  17. python——tensorflow——ValueError:Shape(None,1)and (None,7) are incompatible
  18. sad代价计算_转载:H.264帧内模式选择以及代价计算相关知识
  19. 基于Fluent Terminal和Cmder打造一个美观的Windows命令行工具
  20. 云呐|什么是容灾备份

热门文章

  1. NullPointerException: null 报错
  2. 动态规划——01背包问题
  3. 存储器的保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记18
  4. MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法
  5. springboot学习笔记(一)
  6. c 获取数据库数据计算机,使用c从单板计算机写入mysql数据库使用c
  7. 【译】A Hitchhiker’s Guide to Consensus Algorithms
  8. IELE:区块链的一个新虚拟机
  9. 区块链成熟度评测报告
  10. 探索7.x, 全面解析Activity启动框架 (1)