匆匆又夏天 发表于 2020-8-31 22:26:24

关于字符串的问题

num='0123456789'
char='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
symbols = "~!@#$%^&*()_=-/,.?<>;:[]{}\|"
password=input("请输入你的密码:")
lenth=len(password)

if lenth<=8:
    flag=1
elif lenth>8 and lenth<=16:
    flag=2
else :
    flag=3
a=0

for each in num:
    for ps in password:
      if ps==each:
            a+=1
for each in char:
    for ps in password:
      if ps==each:
            a+=1
for each in symbols:
    for ps in password:
      if ps==each:
            a+=1
if flag==1 and a==1:
    print("低级密码")
elif flag==2 and a==2:
    print("中级密码")
elif flag==2 and a==3:
    print("高级密码")
else:
    print("11")


请问这段代码有什么问题啊,无论输入什么都出来的是11

匆匆又夏天 发表于 2020-8-31 22:32:31

已经解决了 原来每个each都要比较和累加一次那么a的值就很大了。

昨非 发表于 2020-8-31 22:41:40

匆匆又夏天 发表于 2020-8-31 22:32
已经解决了 原来每个each都要比较和累加一次那么a的值就很大了。

不太明白你这11是啥意思

y116114 发表于 2020-9-1 09:40:43

每一个for循环后面都要加一个break吧,不然a会加很多次{:10_279:}

匆匆又夏天 发表于 2020-9-1 20:17:32

y116114 发表于 2020-9-1 09:40
每一个for循环后面都要加一个break吧,不然a会加很多次

对的,我昨天发现了

匆匆又夏天 发表于 2020-9-1 20:18:50

昨非 发表于 2020-8-31 22:41
不太明白你这11是啥意思

因为我一开始输入了密码之后没有输出,我就想测试一下是不是中间的语句的问题,如果打印了11,说明语法没有错是逻辑错了。

昨非 发表于 2020-9-1 20:22:12

匆匆又夏天 发表于 2020-9-1 20:18
因为我一开始输入了密码之后没有输出,我就想测试一下是不是中间的语句的问题,如果打印了11,说明语法没 ...

额,好吧

bonst 发表于 2020-9-1 21:29:13

这个时候就是断点调试的时候到了

qin_yin 发表于 2020-9-3 09:52:36

你的这个for循环之后的判断是错误的,例如你的for

qin_yin 发表于 2020-9-3 10:06:23

你的这个for循环之后的判断是错误的,
例如,这里是分别迭代password,num序列中的每一个元素,然后进行比较当前迭代的字符是否是相同的字符,
password=input()
num="1234567890"
for each in num:
       for i in password:
             if each == i:
               print("each和i是相同的字符")
            else:
                  print("不相同")
你可以配合字符串的内置方法,成员运算符,in,not in,来进行判断字符串含有哪些类型(手机不方便举例子)
页: [1]
查看完整版本: 关于字符串的问题