鱼C论坛

 找回密码
 立即注册
查看: 821|回复: 6

[已解决]Python第14课的动动手,isspace就是识别不出来空格是什么原因

[复制链接]
发表于 2020-1-15 21:04:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
number = '0123456789'
alpha = 'zxcvbnmasdfghjklqwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP'
mark = r'~!@#$%^&*()_=-/,.?<>;:[]{}\|'

password = input('请输入需要检查的密码组合:')
length= len(password)


while (password.isspace() or length == 0):
    password = input('密码格式不正确,请重新输入:')
    length = len(password)

if length <= 8:
    x = 1
elif length >= 16:
    x = 3
else:
    x = 2

y = 0
z = 0
w = 0
for each in password:
    if each in number:
        y += 1
for each in password:
    if each in alpha:
        z += 1
for each in password:
    if each in mark:
        w += 1
print('您的密码安全级别评定为:',end = '')

if x == 1 or y == length or z == length or w == length:
    print('低')
    print('请按以下方式提升您的密码安全级别:\n\t1.密码必须由数字、字母及特殊字符三种组合\n\t2.密码只能由字母开头\n\t3.密码长度不能低于16位')
elif x == 3 and password[0].isalpha and y != 0 and z != 0 and w != 0:
    print('高\n请继续保持')
else:
    print('中')
    print('请按以下方式提升您的密码安全级别:\n\t1.密码必须由数字、字母及特殊字符三种组合\n\t2.密码只能由字母开头\n\t3.密码长度不能低于16位')



password.isspace就是识别不出来空格。到底是为什么啊?
最佳答案
2020-1-16 09:31:03
isspace()是当字符串完全由空格构成时返回True,否则为False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-15 21:10:59 | 显示全部楼层
我这里是能检测出来的。输入若干个空格,会提示 "密码格式不正确,请重新输入"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-16 01:18:45 | 显示全部楼层
本帖最后由 jackz007 于 2020-1-16 10:51 编辑

        这是我写的和小甲鱼完全不同的代码,谨供楼主参考。
  1. mark = r'~!@#$%^&*()_=-/,.?<>;:[]{}\|'
  2. levels = ['低','中','高']
  3. final = '您的密码安全级别评定为:'
  4. attentions = '''请按以下方式提升您的密码安全级别:
  5.                 1. 密码必须由数字、字母及特殊字符三种组合;
  6.                 2. 密码只能由字母开头;
  7.                 3. 密码长度不能低于16位.'''
  8. while True:
  9.     pwd = input('请输入需要检查的密码组合:') . strip()
  10.     if not len(pwd) or pwd . lower() in ['quit' , 'exit' , 'end']:
  11.         break
  12.     else:
  13.         a = sum([1 for x in pwd if x . isalpha()])
  14.         d = sum([1 for x in pwd if x . isdigit()])
  15.         o = sum([1 for x in pwd if x in mark])
  16.         if a + d + o < len(pwd) :
  17.             print('*** 密码中包含无效字符 ***\n')
  18.         else:
  19.             count_len = 3 if len(pwd) >= 16 else 2 if 8 <= len(pwd) < 16 else 1
  20.             count_num = 1 if a > 0 else 0
  21.             count_num += 1 if d > 0 else 0
  22.             count_num += 1 if o > 0 else 0
  23.             if pwd[0] . isalpha() and count_len > 2 and count_num > 2:
  24.                 print(final + '[' + levels[2] + ']')
  25.                 print('请继续保持\n')        
  26.             else:
  27.                 if count_len > 1 and count_num > 1:
  28.                     print(final + '[' + levels[1] + ']')
  29.                 else:
  30.                     print(final + '[' + levels[0] + ']')
  31.                 print(attentions + '\n')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-16 09:31:03 | 显示全部楼层    本楼为最佳答案   
isspace()是当字符串完全由空格构成时返回True,否则为False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 11:21:50 | 显示全部楼层
EthanHsiung 发表于 2020-1-16 09:31
isspace()是当字符串完全由空格构成时返回True,否则为False

谢谢,不过如果密码里面含有空格,想识别出来应该怎么办呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 20:31:29 | 显示全部楼层
sally1399 发表于 2020-2-3 11:21
谢谢,不过如果密码里面含有空格,想识别出来应该怎么办呢?

用for循环,
for char in psw:
    if char == ' ':
        print("含有空格")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 09:53:04 | 显示全部楼层
EthanHsiung 发表于 2020-2-3 20:31
用for循环,
for char in psw:
    if char == ' ':

Soga,非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 08:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表