3. 实现交互式提示输入
任务说明
本案例要求实现一个命令行交互程序:依次提示用户输入姓名和年龄,对输入进行格式验证(姓名非空且仅含中英文字符与空格,年龄为1\~120之间的整数),验证通过后输出包含姓名和年龄的问候语;验证失败则提示具体错误并重新询问该项,直到通过为止。
实现方案
使用Python标准库实现,不依赖第三方包。核心逻辑分为三个函数:get_name()负责循环读取并校验姓名,get_age()负责循环读取并校验年龄,main()负责调用前两者并输出最终问候语。校验规则通过正则表达式和数值范围判断完成。
完整代码
import re
def get_name():
"""循环提示输入姓名,直到格式合法(仅中英文字符与空格,且非空)。"""
pattern = re.compile(r'^[\u4e00-\u9fa5a-zA-Z ]+$')
while True:
name = input("请输入姓名(仅限中英文字符与空格):").strip()
if not name:
print("错误:姓名不能为空。")
elif not pattern.match(name):
print("错误:姓名只能包含中英文字符与空格。")
else:
return name
def get_age():
"""循环提示输入年龄,直到为1~120之间的整数。"""
while True:
age_str = input("请输入年龄(1~120之间的整数):").strip()
if not age_str.isdigit():
print("错误:年龄必须是正整数。")
else:
age = int(age_str)
if 1 <= age <= 120:
return age
else:
print("错误:年龄必须在1到120之间。")
def main():
name = get_name()
age = get_age()
print(f"你好,{name}!你今年 {age} 岁。")
if __name__ == "__main__":
main()
运行与验证
运行方式:将上述代码保存为 interactive_input.py,在终端执行 python interactive_input.py。
验证方法:按以下顺序输入测试数据,观察程序行为:
- 姓名输入
123→ 应提示“姓名只能包含中英文字符与空格”,并重新询问; - 姓名输入
张三→ 通过,进入年龄询问; - 年龄输入
abc→ 应提示“年龄必须是正整数”; - 年龄输入
200→ 应提示“年龄必须在1到120之间”; - 年龄输入
25→ 程序输出你好,张三!你今年 25 岁。并结束。
判定标准:所有非法输入均被拦截并给出对应错误提示,合法输入(如姓名“张三”、年龄“25”)能正确输出问候语,即视为通过。