darklinboxs 2018-07-15 04:21 采纳率: 0%
浏览 998
已采纳

Python if语句问题,控制密码长度问题,求大神解救。

#密码检查
letter="qwertyuioplkjhgfdsazxcvbnmMNBVCXZLKJHGFDSAPOIUYTREWQ"
num="0123456789"
char='~!@#$%^&*()_=-/,.?<>;:[]{}|\'
passwd = input("请输入要检查的密码: ")
leng=0
if (len(passwd)<=7) and passwd in letter or passwd in num:
print('输入密码为高危')
elif passwd in letter and passwd in num and passwd in char and 8 print('输入密码为低危')
elif passwd in letter and passwd in num and passwd in char and leng>=8:
print('输入的密码为中危')
else:
print('输入的密码过长或者过短{}'.format(str(passwd)))

    为什么我输入7个数或者7个字母的时候,直接跳到了else执行后边print语句,如果输入2个或者3个数值或者字母又可以执行if后边的print语句,好奇怪。求大神解救。
  • 写回答

6条回答 默认 最新

  • threenewbee 2018-07-15 07:10
    关注

    我按照我的理解给你写了一个
    myallin是判断是不是全是某种字符 比如 myallin(passwd, num)在 1212111 时候返回 1,abacd1 返回 0
    myin是判断是不是包含有某种字符,比如 myin(passwd, num) 在 1212111 返回1,在 abacd1 也返回 1,在 asdasda 返回 0

    # -*- coding:utf-8 -*-
    
    def myallin(input, check):
        r = 1
        for ch in input:
            if not(ch in check): r = 0
        return r
    
    def myin(input, check):
        for ch in input:
            if ch in check: return 1
        return 0
    
    letter="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    num="0123456789"
    char='~!@#$%^&*()_=-/,.?<>;:[]{}|\\'
    passwd = input("请输入要检查的密码: ")
    if (len(passwd)<=7):
        print('输入的密码 {} 过短'.format(str(passwd)))
    elif (len(passwd)>20): #假设最长20:
        print('输入的密码 {} 过长'.format(str(passwd)))
    elif myallin(passwd, letter) or myallin(passwd, num): #全是数字/字母
        print('输入密码为高危')
    elif myin(passwd, letter) and myin(passwd, num) and myin(passwd, char) and len(passwd)>=8: #包含字母数字符号并且长度>8
        print('输入密码为低危')
    else:
        print('输入的密码为中危')
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败