如何在 python 中循环时对字母使用 "in" 运算符?
How to use "in" operator for alphabets while looping in python?
我正在尝试以下问题:
某网站要求用户输入用户名和密码进行注册。
编写一个程序来检查用户输入的密码的有效性。
- 检查密码的标准如下:
- [a-z]之间至少有1个字母
- 至少有1个数字在[0-9]之间
- [A-Z]之间至少有1个字母
- 至少有 1 个字符来自 [$#@]
- 交易密码最小长度:6
- 交易密码最大长度:12
您的程序应接受一系列以逗号分隔的密码,并将根据上述标准检查它们。将打印符合条件的密码,每个密码以逗号分隔。
- 示例如果将以下密码作为程序的输入:
ABd1234@1,a F1#,2w3E*,2We3345 然后,程序的输出应该
是:ABd1234@1
但是对于我的 python 代码:
values=input("Enter the set of passwords :")
list1=[]
list1=values.split(',')
num1=0
num2=0
num3=0
num4=0
for i in list1:
num1=len(i)
if(num1>=6 and num1<=12):
for z in i:
if (z.isupper()):
num1=1
if(z.islower()):
num2=1
if(z.isdigit()):
num3=1
if(z in ('#','$','@')) :
print(z)
num4=1
if(num1+num2+num3+num4==4):
print(i)
else:
print("passkey failed")
为什么我在没有通过标准的情况下得到的最后一个密钥是正确的。
发生这种情况是因为您的计数器永远不会递减。处理完第一个正确的密钥后,所有密钥的值都将为 1
.
后续运行将成功通过最终的 if
测试,仅此而已。
更改代码以在 循环内重新初始化:
for i in list1:
num1 = len(i)
num2 = num3 = num4 = 0
# rest stays the same
我正在尝试以下问题:
某网站要求用户输入用户名和密码进行注册。
编写一个程序来检查用户输入的密码的有效性。
- 检查密码的标准如下:
- [a-z]之间至少有1个字母
- 至少有1个数字在[0-9]之间
- [A-Z]之间至少有1个字母
- 至少有 1 个字符来自 [$#@]
- 交易密码最小长度:6
- 交易密码最大长度:12
您的程序应接受一系列以逗号分隔的密码,并将根据上述标准检查它们。将打印符合条件的密码,每个密码以逗号分隔。
- 示例如果将以下密码作为程序的输入: ABd1234@1,a F1#,2w3E*,2We3345 然后,程序的输出应该 是:ABd1234@1
但是对于我的 python 代码:
values=input("Enter the set of passwords :")
list1=[]
list1=values.split(',')
num1=0
num2=0
num3=0
num4=0
for i in list1:
num1=len(i)
if(num1>=6 and num1<=12):
for z in i:
if (z.isupper()):
num1=1
if(z.islower()):
num2=1
if(z.isdigit()):
num3=1
if(z in ('#','$','@')) :
print(z)
num4=1
if(num1+num2+num3+num4==4):
print(i)
else:
print("passkey failed")
为什么我在没有通过标准的情况下得到的最后一个密钥是正确的。
发生这种情况是因为您的计数器永远不会递减。处理完第一个正确的密钥后,所有密钥的值都将为 1
.
后续运行将成功通过最终的 if
测试,仅此而已。
更改代码以在 循环内重新初始化:
for i in list1:
num1 = len(i)
num2 = num3 = num4 = 0
# rest stays the same