使用if语句和break终止While循环

时间:2017-11-10 15:08:11

标签: python python-3.x encryption character-encoding python-3.6

好的,我现在正在为我创建的加密添加一些复杂性。 我正在实现一个While循环,从我创建的字典中生成一定数量的字符。然后检查字符是否添加到变量中,然后在达到所需字符数量后终止while循环。由于某种原因,while循环永远不会终止,即使我使用return 0或break等等。

Alphabet = ["a", "b", "c", "d", "e", "f" "g", "h", "i", "j", "k", "l",      "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", '/', '.', ',', '\'', ';', '\\', ']', '[', '{', '}', '|', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', '-', '0', '0', '2', '3', '4', '5', '6', '7', '8', '9']

while True:
    generaterandom = random.SystemRandom.choice() 
    calc0 = len(generaterandom)
    print(generaterandom)
    calc02 = 10
    if generaterandom == "10":
        break

2 个答案:

答案 0 :(得分:0)

if generaterandom == "10":

这是您的问题,您正在检查generaterandom是否为值为10的字符串,您要执行的操作是在它达到10个字符时结束,所以您需要将您的if语句更改为:

if len(generaterandom) == 10:
    break

这会改变它以检查变量generaterandom中的字符数是否等于10,当它等于10时,你的循环将会中断。

如果这不起作用,则重构循环以使其适用于变量,例如:

loop = True
while loop:

开始并结束它:

if len(generaterandom) == 10:
    loop = False

答案 1 :(得分:0)

尝试重构 While 循环,如下所示:

Alphabet = ["a", "b", "c", "d", "e", "f" "g", "h", "i", "j", "k", "l",      "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", '/', '.', ',', '\'', ';', '\\', ']', '[', '{', '}', '|', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', '-', '0', '0', '2', '3', '4', '5', '6', '7', '8', '9']
bool = 1
while bool == 1:
    generaterandom = random.SystemRandom.choice() 
    calc0 = len(generaterandom)
    print(generaterandom)
    calc02 = 10
    if len(generaterandom) == "10":
        bool = 0