<p>我使用名为<code>password</code>的类和名为<code>generate</code>的方法创建了一个随机密码生成器</p>
<p>我的程序正常工作。它根据用户对长度、大小写、数字和特殊字符的偏好生成随机密码</p>
<p>我只是想知道是否有办法重构我用来确定程序将生成何种密码的大量<code>if statements</code></p>
<p>我能提出的任何其他改进建议也会很有帮助。非常感谢</p>
<p>代码:</p>
<pre><code>import random
import string
class password:
def __init__(self, length, string_method, numbers=True, special_chars=False):
self.length = length
self.string_method = string_method
self.numbers = numbers
self.special_chars = special_chars
def generate(self, iterations):
# Checking what type of string method the user has asked for
if self.string_method == 'upper':
stringMethod = string.ascii_uppercase
elif self.string_method == 'lower':
stringMethod = string.ascii_lowercase
elif self.string_method == 'both':
stringMethod = string.ascii_letters
# Checking if the user has asked for numbers or not
if self.numbers == True:
stringNumbers = string.digits
elif self.numbers == False:
stringNumbers = ''
# Checking if the user has asked for special characters or not
if self.special_chars == True:
stringSpecial = string.punctuation
elif self.special_chars == False:
stringSpecial = ''
characters = stringMethod + stringNumbers + stringSpecial
# Generating the password
for p in range(iterations):
output_password = ''
for c in range(self.length):
output_password += random.choice(characters)
print(output_password)
# Test
password1 = password(20, 'lower', True, False) # password length = 20, string method is lowercase, numbers are true and special characters are false
password1.generate(3) # generate the random password 3 times```
</code></pre>