鱼C论坛

 找回密码
 立即注册
查看: 1162|回复: 8

[已解决]python014课后练习(密码判断)

[复制链接]
发表于 2018-1-18 16:11:47 | 显示全部楼层 |阅读模式

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

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

x
自己写的代码最后不管怎么输入答案都是中级密码(希望大佬简单看一下哪里出问题导致的,还有就是我这个代码可以实现目标吗?)
小甲鱼给的答案我也仔细看了,想问一下好像并没有设置高级密码要求是字母开头啊?
大佬们有空帮帮忙看一下,谢谢
input('请输入你的密码:')
temp = str(input)
i = 1
number = 1
letter = 1
special = 1
initial = 1
symbols =r'~!@#$%^&*()_=-/,.?<>;:[]{}\|'
#判断是否为空
while temp.isspace() or len(temp) == False:
        print('输入的密码为空,请重新输入:')
if len(temp) >= 16 :
        i = 3
elif len(temp) > 8:
                i =2
elif len(temp) <= 8:
                        i = 1
for each in temp:
        if each in symbols:
                special = 2
        else :
                special = 1
if temp.isalpha() == True:
        letter = 2
else :
        letter = 1
if temp.isnumeric() == True:
        number = 2
else :
        number = 1
if temp[0].isalpha() == True:
        initial = 2
else :
        initial = 1
answer = i + number + letter + special + initial
if answer == 11:
        print('高级密码')
elif answer == 8 or answer == 9:
                print('中级密码')
elif answer == 6 or answer == 7:
                        print('低级密码')
最佳答案
2018-1-18 17:24:57
isalpha是检查字符串是否全由字母组成,不能判断是否存在,
isnumeric isspace也是一样的。
还有第一二句应该改成
temp = str(input('请输入你的密码:'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-18 16:23:33 | 显示全部楼层
这米有缩进怎么看嘞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-18 16:26:09 | 显示全部楼层
在最后一行加句  print (i, number, letter, special, initial)
你可以检查下是哪一个判断出了问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-18 16:33:27 | 显示全部楼层
vstia 发表于 2018-1-18 16:26
在最后一行加句  print (i, number, letter, special, initial)
你可以检查下是哪一个判断出了问题

不管输入什么print (i, number, letter, special, initial)的值都是3 1 1 2 1,是我的缩进不对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-18 16:48:46 | 显示全部楼层
  1. input('请输入你的密码:')
  2. temp = str(input)
  3. i = 1
  4. number = 1
  5. letter = 1
  6. special = 1
  7. initial = 1
  8. symbols =r'~!@#$%^&*()_=-/,.?<>;:[]{}\|'
  9. #判断是否为空
  10. while temp.isspace() or len(temp) == False:
  11.         print('输入的密码为空,请重新输入:')
  12.         if len(temp) >= 16 :
  13.                 i = 3
  14.         elif len(temp) > 8:
  15.                 i =2
  16.         elif len(temp) <= 8:
  17.                 i = 1
  18. for each in temp:
  19.         if each in symbols:
  20.                 special = 2
  21.         else :
  22.                 special = 1
  23. if temp.isalpha() == True:
  24.         letter = 2
  25. else :
  26.         letter = 1
  27. if temp.isnumeric() == True:
  28.         number = 2
  29. else :
  30.         number = 1
  31. if temp[0].isalpha() == True:
  32.         initial = 2
  33. else :
  34.         initial = 1
  35. print(i,number,letter,special,initial)
  36. answer = i + number + letter + special + initial
  37. if answer == 11:
  38.         print('高级密码')
  39. elif answer == 8 or answer == 9:
  40.                 print('中级密码')
  41. elif answer == 6 or answer == 7:
  42.                         print('低级密码')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-18 17:24:57 | 显示全部楼层    本楼为最佳答案   
isalpha是检查字符串是否全由字母组成,不能判断是否存在,
isnumeric isspace也是一样的。
还有第一二句应该改成
temp = str(input('请输入你的密码:'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-18 17:30:59 | 显示全部楼层
vstia 发表于 2018-1-18 17:24
isalpha是检查字符串是否全由字母组成,不能判断是否存在,
isnumeric isspace也是一样的。
还有第一二句 ...

明白了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-19 15:39:08 | 显示全部楼层
我把你的改了下
你可以看看

  1. temp = str(input('请输入你的密码:'))

  2. i = 1
  3. number = 1
  4. letter = 1
  5. special = 1
  6. initial = 1
  7. symbols =r'~!@#$%^&*()_=-/,.?<>;:[]{}\|'

  8. while ' ' in temp :
  9.     temp = str(input('密码中不可包含空格,请重新输入!'))
  10. #Judge whether there is space

  11. else :
  12.     if len(temp) >= 16 :
  13.         i = 3
  14.     elif len(temp) > 8 :
  15.         i = 2
  16.     else :
  17.         i = 1   
  18. #Calculate the i.

  19.     for each in temp:
  20.         if each in symbols:
  21.                     special = 2
  22.                     break
  23.         else :
  24.                     special = 1
  25. #Calculate the special.

  26.     for each in temp :
  27.         if each.isalpha() == True:
  28.             letter = 2
  29.             break
  30.         else :
  31.             letter = 1
  32. #Calculate the letter.

  33.     for each in temp :
  34.         if each.isnumeric() == True:
  35.             number = 2
  36.             break
  37.         else :
  38.             number = 1
  39. #Calculate the number.

  40.     if temp[0].isalpha() == True:
  41.             initial = 2
  42.     else :
  43.             initial = 1
  44. #Calculate the initial.
  45.             
  46.     answer = i + number + letter + special + initial
  47.     if answer >= 10:
  48.         print('密码强度:高级')
  49.     elif answer >= 8:
  50.         print('密码强度:中级')
  51.     else :
  52.         print('密码强度:低级')


  53.                            
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-19 17:32:54 | 显示全部楼层
vstia 发表于 2018-1-19 15:39
我把你的改了下
你可以看看

非常感谢,试了一下大致是可行的,不过用isalpha和isnumeric还是不准确,还是我想的有问题。缩进还是没学好啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 20:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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