15588686105 发表于 2020-5-20 23:50:21

帮我看下

a=input('please enter ur pw')
k=str(a)
def check():
    if len(k)<8:
      print('longth must greater than 8')
    elif['~', '=', '-', ',', '/', '\\'] in k & len(k) < 16:
      print("高级")
    elif k.isdigit:
      print("低级")
    else:print("中级")

check()

这段哪里有问题呢{:10_266:}

sunrise085 发表于 2020-5-21 00:29:14

a=input('please enter ur pw')
k=str(a)
def check():
    if len(k)<8:
      print('longth must greater than 8')
    elif['~', '=', '-', ',', '/', '\\'] in k & len(k) < 16:
      print("高级")
    elif k.isdigit:
      print("低级")
    else:print("中级")

check()
第六行的 if 条件有问题,k本身是个字符串,['~', '=', '-', ',', '/', '\\'] in k 是不可能的,前者是个列表,列表怎么可能在字符串中呢。
还有,在python 中 & 是位运算符,不是逻辑运算符,逻辑运算符是 and

第八行,isdigit是个函数,后面有小括号,应该是 k.isdigit()

Twilight6 发表于 2020-5-21 01:27:14

帮你稍微改动了下代码位置,和增加了一个循环遍历

a=input('please enter ur pw')
def check():
    for i in ['~', '=', '-', ',', '/', '\\']: # 查找字符串中是否存在特殊字符
      if i in a and 8 < len(a) < 16:
            print("高级")
            break
    else:   # 若不存在,则开始判断是低级还是中级
      if len(a) < 8 :
            print('longth must greater than 8')
      elif a.isdigit():   
            print("低级")
      else:print("中级")

check()

1.代码的k = str(a) 可以去掉,因为input方法本身就是字符串,没有必要重新再次转化为字符串~

2.你代码:
elif['~', '=', '-', ',', '/', '\\'] in a
这个的意思是 判断这一整个 ['~', '=', '-', ',', '/', '\\'] 列表是不是在a中,而不是判断里面的符号在不在a中
若要判断可以用我上面的方法 for循环判断每个特殊字符是否在字符串中

3.代码中你的isdigit方法 忘记带上括号了,其他就没什么大问题了~{:10_288:}

15588686105 发表于 2020-5-21 12:30:44

Twilight6 发表于 2020-5-21 01:27
帮你稍微改动了下代码位置,和增加了一个循环遍历




for i in ['~', '=', '-', ',', '/', '\\']: # 查找字符串中是否存在特殊字符
      if i in a and 8 < len(a) < 16:

这里是只要有一个特殊符号就是高级但这样写就变成了要包含全部的才是高级

Twilight6 发表于 2020-5-21 12:47:37

15588686105 发表于 2020-5-21 12:30
for i in ['~', '=', '-', ',', '/', '\\']: # 查找字符串中是否存在特殊字符
      if i in a and 8 ...

不是 因为只要有一个符合条件 就会进入for循环里面的break 退出循环了
页: [1]
查看完整版本: 帮我看下