如何使用try-except校验用户输入仅含字母,未通过校验时禁止继续操作
问题分析与代码修复
核心问题点
- 输入不合法触发
TypeError异常后,你在except分支直接写了return False,直接终止了函数执行、跳出了while True循环,不会再提示用户重新输入,只要调用方没判断这个返回值就会直接执行后续操作 - 合法输入分支里你把
return self.name注释了,改成break跳出循环后,函数最终没有显式返回有效结果,调用方没法判断校验是否通过
修复后的代码
def inputdata(self): while True: try: self.name = input('\nEnter your full name:') if self.name.isalpha(): print('Data is valid') return self.name # 校验通过直接返回合法值,结束函数 else: raise TypeError except TypeError: print('Please enter letters only.') # 此处删除return False,循环会自动进入下一轮,要求用户重新输入
调用注意事项
调用该方法时需要接收返回值,确认拿到合法结果后再执行后续业务逻辑,示例:
# 调用示例 valid_name = your_instance.inputdata() # 拿到返回的合法姓名后再执行后续操作
内容的提问来源于stack exchange,提问作者commandoChicken
相关产品推荐
相关产品推荐

