保姆级教程:用Python的input和print,5分钟做一个你的专属生日年龄计算器

张开发
2026/6/7 2:56:41 15 分钟阅读

分享文章

保姆级教程:用Python的input和print,5分钟做一个你的专属生日年龄计算器
Python实战5分钟打造个性化生日年龄计算器每次朋友问起年龄总要掰着手指头算半天生日当天想给自己一个特别的祝福却找不到合适工具今天我们就用Python的input和print这两个基础函数配合datetime模块快速制作一个既实用又有成就感的生日信息处理工具。无需任何编程基础跟着步骤走5分钟后你就能拥有专属的生日计算器1. 环境准备与基础认知在开始编写代码前我们先确认几个基本概念input()函数就像餐厅的点单系统它会暂停程序运行等待用户从键盘输入内容print()函数相当于厨房的出菜口负责把处理好的信息展示给用户datetime模块Python内置的时间处理工具包能帮我们获取当前日期、计算时间差等安装Python的过程这里不再赘述推荐使用Python 3.6版本我们直接进入代码编写环节。打开你喜欢的代码编辑器新建一个.py文件比如birthday_calculator.py。提示VS Code、PyCharm社区版或IDLE都是不错的入门选择甚至记事本也能胜任简单脚本编写2. 核心功能实现2.1 接收用户输入我们先设计程序与用户的交互流程# 获取用户姓名 name input(请输入您的姓名) # 获取出生日期按年月日格式 birth_year int(input(请输入您的出生年份如1990)) birth_month int(input(请输入出生月份1-12)) birth_day int(input(请输入出生日期1-31))这里有几个关键点需要注意input()获取的内容默认是字符串类型年份需要转换为整数用int()包裹月份和日期的有效性检查暂时省略进阶版可以添加2.2 计算当前年龄引入datetime模块获取当前日期并计算年龄from datetime import datetime # 获取当前日期 today datetime.now() current_year today.year # 简单年龄计算 age current_year - birth_year注意这种计算方式只考虑年份差精确计算需要考虑月份和日期的比较2.3 格式化输出结果现在我们把收集到的信息组合成友好的输出# 格式化生日信息 birthday_str f{birth_year}年{birth_month:02d}月{birth_day:02d}日 # 组合输出 print(\n *30) print(f亲爱的{name}) print(f您的出生日期是{birthday_str}) print(f您今年{age}岁了) print(*30)这里的f-stringf开头的字符串是Python 3.6的格式化方法:02d表示用两位数字显示不足补零。3. 功能增强与美化基础功能完成后我们可以添加一些实用功能3.1 生日判断与祝福# 检查今天是否是生日 is_birthday (today.month birth_month) and (today.day birth_day) if is_birthday: print(\n 今天是您的生日) print(★ * 10) print(f 祝您{age}岁生日快乐 ) print(★ * 10) else: # 计算距离生日的天数 next_birthday datetime(current_year, birth_month, birth_day) if today next_birthday: next_birthday datetime(current_year1, birth_month, birth_day) days_left (next_birthday - today).days print(f\n距离您下次生日还有{days_left}天)3.2 星座判断功能添加一个有趣的星座判断# 星座判断函数 def get_zodiac_sign(month, day): if (month 1 and day 20) or (month 2 and day 18): return 水瓶座 elif (month 2 and day 19) or (month 3 and day 20): return 双鱼座 # 其他星座判断... elif (month 12 and day 22) or (month 1 and day 19): return 摩羯座 else: return 未知星座 zodiac get_zodiac_sign(birth_month, birth_day) print(f您的星座是{zodiac})4. 完整代码与使用示例将所有功能整合后的完整代码如下from datetime import datetime def main(): print( 生日年龄计算器 ) # 用户输入 name input(请输入您的姓名) birth_year int(input(请输入您的出生年份如1990)) birth_month int(input(请输入出生月份1-12)) birth_day int(input(请输入出生日期1-31)) # 计算逻辑 today datetime.now() age today.year - birth_year birthday_str f{birth_year}年{birth_month:02d}月{birth_day:02d}日 # 输出基本信息 print(\n *30) print(f亲爱的{name}) print(f您的出生日期是{birthday_str}) print(f您今年{age}岁了) # 生日判断 is_birthday (today.month birth_month) and (today.day birth_day) if is_birthday: print(\n 今天是您的生日) print(★ * 10) print(f 祝您{age}岁生日快乐 ) print(★ * 10) else: next_birthday datetime(today.year, birth_month, birth_day) if today next_birthday: next_birthday datetime(today.year1, birth_month, birth_day) days_left (next_birthday - today).days print(f\n距离您下次生日还有{days_left}天) # 星座信息 zodiac get_zodiac_sign(birth_month, birth_day) print(f您的星座是{zodiac}) print(*30) def get_zodiac_sign(month, day): if (month 1 and day 20) or (month 2 and day 18): return 水瓶座 elif (month 2 and day 19) or (month 3 and day 20): return 双鱼座 elif (month 3 and day 21) or (month 4 and day 19): return 白羊座 elif (month 4 and day 20) or (month 5 and day 20): return 金牛座 elif (month 5 and day 21) or (month 6 and day 21): return 双子座 elif (month 6 and day 22) or (month 7 and day 22): return 巨蟹座 elif (month 7 and day 23) or (month 8 and day 22): return 狮子座 elif (month 8 and day 23) or (month 9 and day 22): return 处女座 elif (month 9 and day 23) or (month 10 and day 23): return 天秤座 elif (month 10 and day 24) or (month 11 and day 22): return 天蝎座 elif (month 11 and day 23) or (month 12 and day 21): return 射手座 else: return 摩羯座 if __name__ __main__: main()运行效果示例 生日年龄计算器 请输入您的姓名张三 请输入您的出生年份如19901995 请输入出生月份1-128 请输入出生日期1-3120 亲爱的张三 您的出生日期是1995年08月20日 您今年28岁了 距离您下次生日还有125天 您的星座是狮子座 5. 进阶优化方向这个基础版本已经相当实用但还有不少可以扩展的空间5.1 输入验证增强def get_valid_input(prompt, input_typeint, min_valNone, max_valNone): while True: try: value input_type(input(prompt)) if min_val is not None and value min_val: print(f输入值不能小于{min_val}) continue if max_val is not None and value max_val: print(f输入值不能大于{max_val}) continue return value except ValueError: print(请输入有效的数值) # 使用示例 birth_month get_valid_input(请输入出生月份1-12, min_val1, max_val12)5.2 图形界面版本使用tkinter创建窗口应用import tkinter as tk from tkinter import messagebox def calculate_age(): try: birth_year int(year_entry.get()) birth_month int(month_entry.get()) birth_day int(day_entry.get()) today datetime.now() age today.year - birth_year messagebox.showinfo(结果, f年龄{age}岁\n f生日{birth_year}年{birth_month:02d}月{birth_day:02d}日) except ValueError: messagebox.showerror(错误, 请输入有效的日期) # 创建主窗口 root tk.Tk() root.title(生日计算器) # 添加输入组件 tk.Label(root, text出生年份).grid(row0, column0) year_entry tk.Entry(root) year_entry.grid(row0, column1) # 其他输入组件... calculate_btn tk.Button(root, text计算, commandcalculate_age) calculate_btn.grid(row3, columnspan2) root.mainloop()5.3 数据持久化存储使用json模块保存用户信息import json import os def save_user_info(name, birth_date): user_data { name: name, birth_year: birth_date.year, birth_month: birth_date.month, birth_day: birth_date.day } with open(user_data.json, w) as f: json.dump(user_data, f) def load_user_info(): if os.path.exists(user_data.json): with open(user_data.json) as f: return json.load(f) return None这个生日计算器虽然代码简单但涵盖了Python编程的多个核心概念输入输出、类型转换、条件判断、日期处理等。通过这个项目你不仅获得了一个实用工具更重要的是掌握了如何将这些基础知识点组合起来解决实际问题的方法论。

更多文章