Pythonif语句优化
Python if statement optimisation
我正在制作一个非常基本的密码生成器,它要求用户在密码中输入他们想要的某些内容(例如,用户可以选择是否需要标点符号)。我已经完成了这个程序,它运行得很好,但它包括一段 if 和语句:
if p == "N" and ucl == "N" and lcl == "N":
print("Invalid requirements ")
if p == "N" and ucl == "N" and lcl == "Y":
x = lclList
generate(x)
if p == "N" and ucl == "Y" and lcl == "N":
x = uclList
generate(x)
if p == "N" and ucl == "Y" and lcl == "Y":
x = uclList + lclList
generate(x)
if p == "Y" and ucl == "Y" and lcl == "Y":
x = pList + uclList + lclList
generate(x)
if p == "Y" and ucl == "N" and lcl == "Y":
x = pList + lclList
generate(x)
if p == "Y" and ucl == "Y" and lcl == "N":
x = pList + uclList
generate(x)
if p == "Y" and ucl == "N" and lcl == "N":
x = pList
generate(x)
正如我所说,它运行良好,但看起来确实很混乱且效率低下 - 我已经可以想象如果我使用 4 个要求会有多么复杂,上帝禁止再这样了。是否有另一种编程方式可以使其可重复且更高效?
旁注,这几乎是我编写的第一个功能齐全的程序,所以如果我违反了一些日内瓦编程约定,请不要感到震惊。
您可以将 x
初始化为一个空列表,然后根据用户的选择,添加他们想要添加的内容:
x = []
if lcl == "Y":
x += lclList
if ucl == "Y":
x += uclList
if p == "Y":
x += pList
generate(x)
这是您的第一个功能齐全的程序,所以我会给您一些提示:
- 使用布尔值(True/False)来确定是或否的状态(当前为字符串)。
- 嵌套排他性 if 语句时,使用 elif。
您的代码(已更正)应如下所示(假设 p、lcl 和 ucl 是布尔值,而不是字符串):
# Init empty list.
x = []
# Append elements to your list.
if lcl:
x += lclList
if ucl:
x += uclList
if p:
x += pList
# Check if selections are valid (x won't be an empty list, you can use if statement too) or print error message.
if x:
generate(x)
else:
print("Invalid requirements ")
希望这可以帮助您改进编码!
我正在制作一个非常基本的密码生成器,它要求用户在密码中输入他们想要的某些内容(例如,用户可以选择是否需要标点符号)。我已经完成了这个程序,它运行得很好,但它包括一段 if 和语句:
if p == "N" and ucl == "N" and lcl == "N":
print("Invalid requirements ")
if p == "N" and ucl == "N" and lcl == "Y":
x = lclList
generate(x)
if p == "N" and ucl == "Y" and lcl == "N":
x = uclList
generate(x)
if p == "N" and ucl == "Y" and lcl == "Y":
x = uclList + lclList
generate(x)
if p == "Y" and ucl == "Y" and lcl == "Y":
x = pList + uclList + lclList
generate(x)
if p == "Y" and ucl == "N" and lcl == "Y":
x = pList + lclList
generate(x)
if p == "Y" and ucl == "Y" and lcl == "N":
x = pList + uclList
generate(x)
if p == "Y" and ucl == "N" and lcl == "N":
x = pList
generate(x)
正如我所说,它运行良好,但看起来确实很混乱且效率低下 - 我已经可以想象如果我使用 4 个要求会有多么复杂,上帝禁止再这样了。是否有另一种编程方式可以使其可重复且更高效?
旁注,这几乎是我编写的第一个功能齐全的程序,所以如果我违反了一些日内瓦编程约定,请不要感到震惊。
您可以将 x
初始化为一个空列表,然后根据用户的选择,添加他们想要添加的内容:
x = []
if lcl == "Y":
x += lclList
if ucl == "Y":
x += uclList
if p == "Y":
x += pList
generate(x)
这是您的第一个功能齐全的程序,所以我会给您一些提示:
- 使用布尔值(True/False)来确定是或否的状态(当前为字符串)。
- 嵌套排他性 if 语句时,使用 elif。
您的代码(已更正)应如下所示(假设 p、lcl 和 ucl 是布尔值,而不是字符串):
# Init empty list.
x = []
# Append elements to your list.
if lcl:
x += lclList
if ucl:
x += uclList
if p:
x += pList
# Check if selections are valid (x won't be an empty list, you can use if statement too) or print error message.
if x:
generate(x)
else:
print("Invalid requirements ")
希望这可以帮助您改进编码!