我在使用以下代码时遇到了问题
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)
此条件为真。
我希望我清楚。谢谢!
答案 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)
# ...