python - 为什么我的程序没有检测到大写字符?
问题描述
我要求用户输入密码。然后程序确定密码是否有效,如果它符合某些标准。
这是有问题的部分。
for i in range(0, len(password)):
if(password[i].isdigit()==True):
isNum+=1
elif (password[i].isalpha()==True):
isLetter+=1
elif (password[i].isupper()==True):
isUpper+=1
我的程序可以很好地检测数字和字母,但它不检测大写字母。如果我输入密码 1234Foxes,它会说有 4 个字母,4 个数字,总共 8 个字符,但它说有 0 个大写字母。
解决方案
如果isupper
为真,则isalpha
一定为真,因为大写字母必然是字母。由于您使用elif
的是 ,因此条件是排他的,一旦isalpha
检查为真,检查就会停止。
elif
如果您希望两个检查都运行,请不要在此处使用:
for character in password:
if(character.isdigit()):
isNum += 1
elif (character.isalpha()):
isLetter += 1
if (character.isupper()):
isUpper += 1
password
我还通过直接迭代字符串摆脱了索引的需要,以及多余的== True
推荐阅读
- angular - 将 FullCalendar 与 Angular 8 一起使用,dayGridMonth 中的事件与 timeGridWeek 不同,没有结束值
- php - 使用 composer 安装 phpunit selenium 时安装失败
- html - 具有 3 个固定宽度列的页面
- reactjs - 如何设置语义 UI 禁用按钮的样式
- java - Java 代码“NumberFormat nf = NumberFormat.getInstance();”
- c++ - 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- c++ - 在类中包含 zmq::socket_t 成员的正确方法?
- java - 使用日历在日期中添加或子
- java - JPQL join 用于渴望获取关联
- c - 如何使用 C 编程在不使用 opendir 和 stat 的情况下在文件夹中获取扩展名为 .txt 的文件?