pythonlearner12 发表于 2019-10-30 12:50:48

关于PYTHON第014讲的密码题目

关于PYTHON第014讲的密码题目:
symbol=r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
flag=0
text=('''
请按以下方式提升你的密码安全级别:
\t1.密码必须由数字、字母及特殊字符三种组合
\t2.密码只能由字母开头
\t3.密码长度不能低于16位''')
password = input('请输入需要检查的密码组合:')
for each in password:
    if each in symbol:
      flag=1
(这里为什么不能加break呢?加的话,会直接结束程序。)
if password.isalpha()==False or flag == 0:
    print('你的密码安全级别为:低'+text)
else:
    if len(password)<=8 or password.isalnum()==True:
      print('你的密码安全级别为:低'+text)
    elif 8<len(password)<16:
      print('你的密码安全级别为:中'+text)
    elif len(password)>16:
      print('''你的密码安全级别为:高
请继续保持。''')
      

jackz007 发表于 2019-10-30 14:04:22

本帖最后由 jackz007 于 2019-10-30 14:13 编辑

      楼主的代码严重不完整,试试这个吧:
#-*- coding:gbk -*-
numbers = '0123456789'
words = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
flag = 0
text = ('''请按以下方式提升你的密码安全级别:
\t1.密码必须由数字、字母及特殊字符三种组合
\t2.密码只能由字母开头
\t3.密码长度不能低于16位''')
password = input('请输入需要检查的密码组合:') . strip()

length = len(password)
if length:
    if length < 8:
      count_len = 1
    elif length >= 8 and length < 16:
      count_len = 2
    elif length >= 16:
      count_len = 3
   
    for each in password:
      if each in numbers:
            flag += 1
            break
    for each in password:
      if each in words:
            flag += 1
            break
    for each in password:
      if each in symbols:
            flag += 1
            break
    if count_len > 2 and flag > 2 and password . isalpha():
      print('你的密码安全级别为:高,请继续保持。')
    elif count_len < 2 or flag < 2 or not password . isalpha():
      print('你的密码安全级别为:低\n' + text)
    else:
      print('你的密码安全级别为:中\n' + text)

lovepipi 发表于 2019-10-30 15:30:45



新鱼友

Rank: 1

积分
    15

    发消息

       
电梯直达
跳转到指定楼层
1#
发表于 2 小时前 | 只看该作者 回帖奖励
有一大锅奖品要送给小甲鱼的粉丝!!!
关于PYTHON第014讲的密码题目:
symbol=r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
flag=0
text=('''
请按以下方式提升你的密码安全级别:
\t1.密码必须由数字、字母及特殊字符三种组合
\t2.密码只能由字母开头
\t3.密码长度不能低于16位''')
password = input('请输入需要检查的密码组合:')
for each in password:
    if each in symbol:
      flag=1
(这里为什么不能加break呢?加的话,会直接结束程序。)

首先楼主需要明白,for each in password,是遍历整个password,里面的if each in symbol是判断遍历整个password的字符是否有一个在symbol(符号)里面。

说多了,其实break的缩进很重要,如果跟for一个缩进,那么就是for第一次的时候,就break了,如果加在if里面,那么就是if成立后break

pythonlearner12 发表于 2019-10-31 20:08:04

jackz007 发表于 2019-10-30 14:04
楼主的代码严重不完整,试试这个吧:

谢谢,这个确实更好

好好学不玩手机 发表于 2020-2-14 18:10:51

jackz007 发表于 2019-10-30 14:04
楼主的代码严重不完整,试试这个吧:

请问count_len是什么意思呀?之前好像没有定义

jackz007 发表于 2020-2-14 19:17:42

好好学不玩手机 发表于 2020-2-14 18:10
请问count_len是什么意思呀?之前好像没有定义

      Python 通过赋值来给变量赋值,所以,在 Python 中,变量必须先赋值,然后才能访问,否则就会出现错误。
      在本例中,要求将密码的字符长度作为判定安全性的因素之一,按照 length < 8,8 <= length < 16,length > 16 分为三个不同的安全等级,变量 count_len 就是用来保存这个判断结果的。

好好学不玩手机 发表于 2020-2-14 21:59:28

jackz007 发表于 2020-2-14 19:17
Python 通过赋值来给变量赋值,所以,在 Python 中,变量必须先赋值,然后才能访问,否则就会 ...

多谢!明白了

yznldzd 发表于 2020-2-17 21:22:50

lovepipi 发表于 2019-10-30 15:30
新鱼友

Rank: 1


你好,请问这个for each in password是一个循环吗

狐狸Littlefox 发表于 2020-4-8 19:22:28

突然想到如果想做成一个循环结构,就是如果密码等级为低,需要重输入密码的话,循环怎么加
页: [1]
查看完整版本: 关于PYTHON第014讲的密码题目