我编写这段代码是为了作为练习生成一个密码,但我想知道是否有更明智的方法来使用if。我愚蠢地列出了所有可能的案件,我感到很难过。试图将if放在其他if中,这就变得难以理解了。
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)谢谢!另外,如果代码中还有什么是麻利的,请告诉我:)
发布于 2022-07-25 14:35:13
您可以根据输入构建regex字符串:
reg = '[a-z'
if upc: reg += "A-Z"
if nbr: reg += "\\d"
if spe: reg += "_$.+-/*="
reg += "]"https://stackoverflow.com/questions/73110845
复制相似问题