Python如何拼接字符串避免末尾多余分隔符 密码校验输出问题解决
代码问题说明
- 末尾多逗号的原因:前三个缺失判断都固定使用
end=','打印,只要触发了前三个判断且没有触发特殊字符缺失的判断,末尾就会残留多余逗号 - 额外存在的两处隐性错误:
- 输入变量名
s后续被特殊字符缺失的提示字符串覆盖,属于不规范的变量复用 - 最终密码合法判断时变量名写错,
specialcase不存在,实际定义的变量是special,运行会触发NameError
- 输入变量名
修正方案
优先将所有需要输出的缺失提示收集到列表中,最终使用字符串的join方法统一拼接,天然不会出现首尾多余分隔符的问题,逻辑更简洁可控。
修正后完整代码:
pwd = input("Create new password: ") digit = 0 upper = 0 lower = 0 special = 0 for i in pwd: ord_i = ord(i) if 48 <= ord_i <= 57: digit += 1 elif 65 <= ord_i <= 90: upper += 1 elif 97 <= ord_i <= 122: lower += 1 elif ord_i in (95, 64, 35, 36): special += 1 missing = [] if digit == 0: missing.append('Digit missing') if upper == 0: missing.append('Uppercase missing') if lower == 0: missing.append('Lowercase missing') if special == 0: missing.append('Special character missing') if missing: print(', '.join(missing)) else: print("Password granted")
测试验证:输入测试值kjishdui@时,missing列表为['Digit missing', 'Uppercase missing'],拼接后输出正好符合预期,不会出现多余逗号。
内容的提问来源于stack exchange,提问作者Kid
相关产品推荐
相关产品推荐

