python - print 打印一个空格太多
问题描述
我目前正在完成我的项目,该项目涉及使用密钥矩阵对句子进行加密。到目前为止,所有计算都已完成且正确,剩下的就是我将输出打印到屏幕上,瞧。
您可以在上面看到的是我当前的输出。密钥矩阵按照我希望的方式打印,并且加密消息也很好,除了我的打印比需要的多一个空格。这是非常有问题的,因为该项目将使用机器人进行验证,因此即使它在屏幕上没有任何改变(除了管道进入 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();
我尝试了类似于我为 Key Matrix 所做的事情,但并没有真正奏效。关于如何不打印最后一个“”的任何想法?
谢谢大家的阅读!
由于我还是 python 新手,请原谅我糟糕的编码风格,我仍在努力。
解决方案
您的问题是嵌套for
循环的每次迭代都会打印您的end
论点,一个空格。假设您想要所有元素之间有一个,那很好,但它不知道在嵌套循环的最后一次迭代中跳过它。
解决这个问题的方法不止一种,但是因为你提到是 Python 新手,所以我会坚持一个简单的方法——而不是打印每个数字,而是将数字收集在一个列表中,然后将该列表传递给print()
. print()
默认在其参数之间添加分隔符,但不在最后一个参数之后。
message_elements = []
for line_index in range(0, lines):
for col_index in range(0, matrix_size):
message_elements.add("{}".format(encrypted_matrix[line_index][col_index]))
print(*message_elements)
*
final 中的运算符print()
解包列表,就好像您已将其每个元素指定为print()
. 它相当于:
print(message_elements[0], message_elements[1], ...)
一旦您对 Python 有了更多的经验,就有一些方法可以更简洁地将矩阵元素收集到一个列表中,或者完全避免中间列表并使用单个表达式来完成。但这应该可以工作,并且我可以从您现有的代码中尽可能少地改变。
推荐阅读
- jquery - XMLHttpResponse 负载不同于 XHR.responseText
- ruby-on-rails - 构建 Ruby、JS 和 CSS 的自定义库
- azure-web-app-service - 尽管选择了 rekey,但应用服务证书未更新
- css - 在 Gutenberg 上的 align full 或 align wide 块中设置最大宽度
- c# - 如何在 Directwrite 中为给定字体获取可用的 OpenType 功能?
- react-native - React Native [网络错误]: TypeError: Network request failed using Apollo Client
- ansible - Ansible 从具有匹配正则表达式值的字典列表中选择子列表
- hammer.js - 您如何在 panmove 上获得当前目标?
- asp.net-mvc - AllowHtml 表单处理:没有任何内容写入数据库
- angular - 使用带有 EnableOAuth2Sso 注释的 PCF SSO 服务时如何排除 Angular 组件?