Python如何根据用户的多选项输入生成对应的个性化回复?
修改后的完整可运行代码
from datetime import datetime # 1. 询问姓名 name = input('你叫什么名字?') print(f'嗨 {name} !很高兴认识你~') # 2. 询问性别并匹配回复 gender = input('你的性别是什么?').strip() # 兼容多种输入格式,不区分大小写和中英文 is_male = gender in ['男', 'male', 'Male', 'M', 'm'] is_female = gender in ['女', 'female', 'Female', 'F', 'f'] if is_male: print('Nice to meet you dude!') elif is_female: print('Nice to meet you miss!') else: print('Nice to meet you!') # 3. 询问喜欢的颜色 favorite_color = input('你最喜欢的颜色是什么?').strip() print(f'{favorite_color}?我也超喜欢{favorite_color}的!') # 4. 询问出生年份计算年龄,加容错和不同回复 while True: birth_year = input('你的出生年份是哪一年?').strip() try: birth_year = int(birth_year) # 自动获取当前年份,不用写死 current_year = datetime.now().year age = current_year - birth_year if age < 0 or age > 120: print('你输入的年份不太对哦,再输一次吧~') continue # 不同年龄不同回复 if age < 18: print(f'你才{age}岁?好小呀,太羡慕了!') elif 18 <= age < 30: print(f'你{age}岁?正是青春正好的年纪呀!') else: print(f'你{age}岁?你年纪好大哦!') break except ValueError: print('输入的不是合法年份哦,请输入数字~') # 5. 询问是否养宠物并匹配回复 pets_ans = input('你有没有养宠物?').strip().lower() if pets_ans in ['有', '是的', '对', 'y', 'yes', 'yeah']: print('太棒了!你的宠物一定超级可爱吧~') else: print('要是以后想养的话,粘人小猫和温顺小狗都是很不错的选择哦~')
主要改动说明
- 修复了原代码性别逻辑硬编码的问题:原来的
is_male = True是写死的,完全没有用到用户输入的gender值,现在通过判断用户输入的内容来设置变量,同时兼容中英文、大小写多种输入格式,还加了非男非女的兜底回复。 - 优化了年龄计算逻辑:用
datetime模块自动获取当前年份,不用每年手动修改固定值;加了输入容错,避免用户输入非数字或者不合理年份时程序直接崩溃;还根据不同年龄段返回了差异化的回复,更符合交互需求。 - 修复了原代码的类型错误:原代码直接把int类型的age和字符串拼接,会触发
TypeError,现在用f-string自动处理类型转换,不会报错。 - 补充了宠物问题的回复逻辑:根据用户的肯定/否定回答返回对应的内容。
- 所有输入都加了
strip()去掉首尾空格,避免用户不小心输入的空格影响判断。
内容的提问来源于stack exchange,提问作者jcs1989
相关产品推荐
相关产品推荐

