Python输入验证求助:仅允许字母与连字符的代码调试
输入验证问题:仅允许字母和“-”的解决方案
我希望仅接受字母和特殊字符“-”作为输入,以下是我的代码,其中定义了specar="-",但该变量未在循环中发挥作用,请问这是什么原因?
用户提供的代码:
def demander_le_nom(): reponse_nom = (input("Quel est votre nom?")) specar = "-" for chart in reponse_nom: if not reponse_nom.isalpha(): print("Erreur!") reponse_nom = (input("Quel est votre nom?")) else: pass return reponse_nom
问题原因
- specar变量未被使用:你定义了
specar = "-",但后续的验证逻辑完全没引用这个变量,所以它对输入检查没有任何影响。 - isalpha()方法不适用:
reponse_nom.isalpha()会判断整个字符串是否全为字母,只要包含“-”或其他非字母字符,就会返回False,这和你允许“-”的需求冲突。 - 循环逻辑失效:遍历原输入的字符时,若验证失败重新输入,新的字符串不会被循环重新检查,导致部分非法输入可能直接返回。
修正后的代码
def demander_le_nom(): allowed_char = "-" while True: reponse_nom = input("Quel est votre nom?") # 逐个字符验证合法性 is_valid = True for char in reponse_nom: if not (char.isalpha() or char == allowed_char): is_valid = False break if is_valid: return reponse_nom print("Erreur! 只能输入字母和字符'-'")
修正说明
- 将
allowed_char(原specar)纳入字符检查逻辑,确保“-”被允许 - 使用
while True循环,持续请求输入直到内容合法 - 逐个字符验证,确保所有字符都符合规则后才返回结果
内容的提问来源于stack exchange,提问作者2024-05-20
相关产品推荐
相关产品推荐

