Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python3中如何在while循环中嵌套if语句_Python_If Statement_While Loop_Rsa - Fatal编程技术网

在Python3中如何在while循环中嵌套if语句

在Python3中如何在while循环中嵌套if语句,python,if-statement,while-loop,rsa,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: plain

我有以下代码的问题

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(纯文本)%2!=0使下面while循环中的代码失败,它无法执行

是的,这就是if语句的工作原理

当我将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)
        # ... 
当len(纯文本)%2!=0使下面while循环中的代码失败,它无法执行

是的,这就是if语句的工作原理

当我将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)
        # ... 

嗯,你试过打印出
str(纯文本)
来看看长度是偶数还是奇数吗?我试过了。我一行一行地读,所以几行甚至其他行都很奇怪。好吧,那么if语句运行,或者它不运行。。。我不确定我是否理解这个问题。也许你可以添加一个else语句来让它更清楚?@Lafexlos这会有什么不同。它仍然会进入循环,对吗?if语句不会运行。但当%2==0时,将不执行进一步的操作。是的,我会加上它。但是你现在明白了吗?嗯,你试过打印出
str(纯文本)
,看看长度实际上是偶数还是奇数?我知道了。我一行一行地读,所以几行甚至其他行都很奇怪。好吧,那么if语句运行,或者它不运行。。。我不确定我是否理解这个问题。也许你可以添加一个else语句来让它更清楚?@Lafexlos这会有什么不同。它仍然会进入循环,对吗?if语句不会运行。但当%2==0时,将不执行进一步的操作。是的,我会加上它。但是你现在明白了吗?对于这个问题,它抛出了一个错误,对范围内的i(0,len(纯文本),2):TypeError:int类型的对象没有编辑len()来修复它,这是有效的!我从来没有想过。谢谢为此,它向我抛出一个错误,表示范围内的i(0,len(纯文本),2):TypeError:type'int'的对象没有编辑len()来修复它,这是有效的!我从来没有想过。谢谢