首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果有三个未知数的话,最好的优化方法?

如果有三个未知数的话,最好的优化方法?
EN

Stack Overflow用户
提问于 2022-07-25 14:23:37
回答 1查看 41关注 0票数 1

我编写这段代码是为了作为练习生成一个密码,但我想知道是否有更明智的方法来使用if。我愚蠢地列出了所有可能的案件,我感到很难过。试图将if放在其他if中,这就变得难以理解了。

代码语言:javascript
复制
import random
import re
import exrex

len_pwd = int(input('Length of the password : '))
upc = int(input('Upper case ? (0 = No ; 1 = Yes) : '))
nbr = int(input('Numbers ? (0 = No ; 1 = Yes) : '))
spe = int(input('Special char ? (0 = No ; 1 = Yes) : '))

pwd = ''

for i in range(len_pwd):
    if upc and not nbr and not spe:
        a = exrex.getone('[a-zA-Z]')
        pwd += a
    elif nbr and not upc and not spe:
        a = exrex.getone('[a-z\d]')
        pwd += a
    elif spe and not upc and not nbr:
        a = exrex.getone('[a-z"_$.+-/*=]')
        pwd += a
    elif nbr and spe and not upc:
        a = exrex.getone('[a-z\d"_$.+-/*=]')
        pwd += a
    elif upc and nbr and not spe:
        a = exrex.getone('[a-zA-Z\d]')
        pwd += a
    elif upc and spe and not nbr:
        a = exrex.getone('[a-zA-Z"_$.+-/*=]')
        pwd += a
    elif not upc and not nbr and not spe:
        print("Don't bother me.")
        break
    else:
        a = exrex.getone('[a-zA-Z\d"_$.+-/*=]')
        pwd += a

print(pwd)

谢谢!另外,如果代码中还有什么是麻利的,请告诉我:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 14:35:13

您可以根据输入构建regex字符串:

代码语言:javascript
复制
reg = '[a-z'
if upc: reg += "A-Z"
if nbr: reg += "\\d"
if spe: reg += "_$.+-/*="
reg += "]"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73110845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档