如何检测字符串中的数字字符 实现姓名输入不含数字及字母数字组合校验
问题修复方案
错误原因
- 现有代码的
alpha校验函数逻辑错误:只要字符串中存在任意一个英文字母就返回合法,不会过滤数字、特殊符号等非法内容,因此ay123这类字母加数字的组合会被误判为合法 - 代码中存在未定义变量
nums就直接打印的错误,运行时会直接抛出异常
修复逻辑
我们需要的校验规则是:名、中间名、姓三个输入框仅允许输入纯英文字母,不允许出现数字、符号、空格等其他内容。遍历每个输入的所有字符,只要存在非英文字母的内容就判定为非法。
修正后完整代码
import string print('仅限高中使用的成绩查询系统,欢迎使用 \n') def is_valid_name(name): # 校验输入内容仅包含英文字母 return all(char.isalpha() for char in name) while True: a = input('请输入学生的名:').strip().upper() b = input('请输入学生的中间名:').strip().upper() c = input('请输入学生的姓:').strip().upper() if is_valid_name(a) and is_valid_name(b) and is_valid_name(c): full_name = f"{a} {b} {c}" print('欢迎进入系统') break else: print('输入无效,请仅输入英文字母!')
补充说明
如果业务场景需要支持带特殊字符的英文名(比如O'Conner、Smith-Jones这类带撇号、连字符的名字),可以自行修改校验规则,增加对应合法字符的判断即可。
内容的提问来源于stack exchange,提问作者Ayem
相关产品推荐
相关产品推荐

