鱼C论坛

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

[已解决]关于PYTHON第014讲的密码题目

[复制链接]
发表于 2019-10-30 12:50:48 | 显示全部楼层 |阅读模式

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

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

x
关于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[0].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('''你的密码安全级别为:高
请继续保持。''')
        
最佳答案
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[0] . isalpha():
        print('你的密码安全级别为:高,请继续保持。')
    elif count_len < 2 or flag < 2 or not password[0] . isalpha():
        print('你的密码安全级别为:低\n' + text)
    else:
        print('你的密码安全级别为:中\n' + text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-31 20:08:04 | 显示全部楼层
jackz007 发表于 2019-10-30 14:04
楼主的代码严重不完整,试试这个吧:

谢谢,这个确实更好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 18:10:51 | 显示全部楼层
jackz007 发表于 2019-10-30 14:04
楼主的代码严重不完整,试试这个吧:

请问count_len是什么意思呀?之前好像没有定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 19:17:42 | 显示全部楼层
好好学不玩手机 发表于 2020-2-14 18:10
请问count_len是什么意思呀?之前好像没有定义


        Python 通过赋值来给变量赋值,所以,在 Python 中,变量必须先赋值,然后才能访问,否则就会出现错误。
        在本例中,要求将密码的字符长度作为判定安全性的因素之一,按照 length < 8,8 <= length < 16,length > 16 分为三个不同的安全等级,变量 count_len 就是用来保存这个判断结果的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 21:59:28 | 显示全部楼层
jackz007 发表于 2020-2-14 19:17
Python 通过赋值来给变量赋值,所以,在 Python 中,变量必须先赋值,然后才能访问,否则就会 ...

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

使用道具 举报

发表于 2020-2-17 21:22:50 | 显示全部楼层

你好,请问这个for each in password是一个循环吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 19:22:28 | 显示全部楼层
突然想到如果想做成一个循环结构,就是如果密码等级为低,需要重输入密码的话,循环怎么加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 03:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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