如何优化嵌套的if语句?我不能在这里使用&&

问题描述

有没有更好的方式可以编写此内容?我是python编码的新手,我想改进以下代码行。我在这里包括了几行代码,但是原始代码比这更长(如果是多个语句)。任何指导/反馈都将有所帮助。

    upperchar = #generate a char
    pwdlist.append(upperchar)
    if len(pwdlist) < length:
        upperchar2 = #generate a char
        pwdlist.append(upperchar2)
        if len(pwdlist) < length:
            lowerchar = #generate a char
            pwdlist.append(lowerchar)
            if len(pwdlist) < length:
                lowerchar2 = #generate a char
                pwdlist.append(lowerchar2)
                if len(pwdlist) < length:
                    char3 = #generate a char
                    pwdlist.append(char3)

在这里发布我的第一个问题,所以如果您还需要其他任何内容,请问我。

解决方法

假设您总是以相同的方式生成字符,那么这将起作用

pwdlist = []
while len(pwdlist) < length:
    pwdlist.append(generate_char())

pwdlist = [generate_char() for _ in range(length)]

然后,您可以在此generate函数中添加逻辑,以基于随机值返回某些内容,例如

def generate_char():
    from random import randrange
    x = randrange(4)
    if x == 0:
        return 'value a-z'
    elif x == 1:
        return 'value A-Z'
    elif x == 2:
        return 'value 0-9'
    elif x == 3:
        return 'punctuation'