如何在Python 3的while循环中嵌套if语句

时间:2019-10-08 05:39:09

标签: python if-statement while-loop rsa

我在使用以下代码时遇到了问题

try:
    while True:
        # Get next line from file
        line = fileHandler.readline()
        plaintext = pow(int(line), a, n)    # a, n and line read from file are integers.
        if len(str(plaintext)) % 2 != 0:
            plaintext = '0{}'.format(plaintext)  # adding zero if odd no of digits
            i = 0
            while i < len(plaintext) - 1:
                print(plaintext)
                row = int(plaintext[i])
                col = int(plaintext[i + 1])
                decrypted.append(matrix[row][col])
                if row > 0:
                    row -= 1
                print(matrix[row][col - 1])
                i = i + 2

        print(plaintext)
        if not line:
            print(decrypted)
            break
except ValueError:
    pass

当len(plaintext)%2!= 0失败时,下面的while循环中的代码将无法执行。我知道我在if循环中有while循环,所以它发生了。但是当我将while循环移出if时,什么也不会执行。有人可以告诉我我在做什么错。

我现在得到以下输出:

  

19475276822512119441620228045431117884359382536936226816   05297161768145254779131968343762551184670149997720486635

     

H

     

05297161768145254779131968343762551184670149997720486635

     

p

     

05297161768145254779131968343762551184670149997720486635

     

第一行的操作未执行,但在

时执行
len(str(plaintext)) % 2 != 0:
            plaintext = '0{}'.format(plaintext)

此条件为真。

我希望我清楚。谢谢!

1 个答案:

答案 0 :(得分:0)

  

当len(plaintext)%2!= 0失败时,下面的while循环中的代码将无法执行

是的,这就是语句有效的方式

  

当我将while循环移出if时,什么也没有执行

尚不清楚您将其移动了多远,但是它仍然需要在while循环的外部,并且您可以使用一个范围而不是另一个while循环

while True:
    ... 
    plaintext = str(pow(int(line), a, n)) 
    if len(plaintext) % 2 != 0:
        plaintext = '0{}'.format(plaintext)  # adding zero if odd no of digits
    # indent if you only want to execute this for odd length numbers 
    for i in range(0, len(plaintext), 2):
        print(plaintext)
        # ...