我目前正在完成我的项目,涉及使用密钥矩阵加密一个句子。 到现在为止,所有的计算都已经完成并且正确了,剩下的就是我把输出打印到屏幕上
上面你能看到的是我的电流输出。 密钥矩阵是按我所希望的方式打印的,加密消息也很好,只是我的打印比需要的多打印一个空间。这是相当有问题的,因为事实上,该项目将与机器人验证,所以即使它没有改变屏幕上(除了管道到cat-e)的机器人仍然会拿起它
我的打印功能如下所示:
def the_output_printer(key_matrix, encrypted_matrix, matrix_size):
length = (len(sys.argv[1]));
if (length == 0):
exit(84);
lines = round(length / matrix_size, 0);
if (length % matrix_size != 0):
lines += 1
lines = int(lines);
print("Key matrix:");
for line_index_key in range(0, matrix_size):
for col_index_key in range(0, matrix_size):
if (col_index_key != matrix_size - 1):
print("{}".format(key_matrix[line_index_key][col_index_key]), end="\t");
if (col_index_key == matrix_size - 1):
print("{}".format(key_matrix[line_index_key][col_index_key]), end="\n");
print("\n", end="");
print("Encrypted message:")
for line_index in range(0, lines):
for col_index in range(0, matrix_size):
print("{}".format(encrypted_matrix[line_index][col_index]), end=" ");
print();
我尝试了一些类似于我为密钥矩阵所做的事情,但没有真正奏效。 有没有办法不打印最后一个“”
谢谢大家的阅读
由于我还是python新手,请原谅我糟糕的编码风格,我还在努力
您的问题是嵌套的
for
循环的每次迭代都会打印end
参数,一个空格。假设您希望所有元素之间都有一个元素,但它不知道在嵌套循环的最后一次迭代中跳过它解决这个问题的方法不止一种,但是因为您提到了我是Python的新手,所以我将坚持使用一种简单的方法—不打印每个数字,而是将数字收集到一个列表中,然后将该列表传递给
print()
print()
默认为在其参数之间添加分隔符,但不在最后一个参数之后添加分隔符最后一个
print()
中的*
操作符打开列表,就好像您将它的每个元素指定为print()
的参数一样。相当于:一旦您对Python有了更多的经验,就可以更简洁地将矩阵元素收集到一个列表中,或者完全避免使用中间列表并使用一个表达式来完成。但这应该工作和改变尽可能少,我可以从您现有的代码
好吧,我想出来了:)! 问题是,由于我还是Python新手,我又一次搞砸了如何使用Python range()函数。 我以前试图修复这个类似于:
我承认在使用
该值在foo-1处停止,或者非常简单地说,当它严格低于foo时。 修复方法很简单,就是在if语句中添加-1,这和我在打印key\u矩阵时忘记的完全一样。函数的固定部分现在看起来如下:
这给了我正确的输出:)。谢谢大家,但我重新阅读了几次代码后就明白了
相关问题 更多 >
编程相关推荐