Python 3:将多行打印到一个lin

2024-05-23 17:11:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Google搜索了Stackoverflow和其他站点的线程,没有什么能给我提供我想要的东西。

我是使用Python 3的新编程学生,所以我的大部分内容都是非常基础的。

我正在写一个程序,允许我加密和解密一个文本文件使用凯撒密码。从用户处获取短语并应用用户给定的移位。

这就是我现在的工作:

一些代码只是作为一个占位符放在那里,直到我进一步进入我的程序。

import string
print ("1) Encrypt")
print ("2) Decrypt")
print ("3) Decrypt w/o Shift")

Choice = input("Choice: ")

if Choice == '1':
    message = input("Message: ")
    shift = int(input("Shift: "))
    newmsg = ''
    for char in message:
        if char.isupper():
            new = (ord(char)-ord('A')) + shift
            newmsg = chr(new+ord('A'))
            print (newmsg, end="")
        else:
            print(" ")


elif Choice == '2':
    print ("2")

elif Choice == '3':
    print ("3")

当我输入一个测试短语时,例如“THIS IS a test”,它会给我正确加密的输出,但它会如下显示:

V
J
K
U

K
U

C

V
G
U
B

这是2的“移位”

如果我将end = ' '添加到print语句中,它将输出为:

V J K U
K U
C
V G U V

如果我将end = ''添加到print语句中,它将输出为:

VJKU
KU
C
VGUV

我正在寻找一个输出:

VJKU KU C VGUV

我知道我忽略了这件事。任何帮助都将不胜感激。非常感谢。


Tags: 用户程序messageinputifshiftendprint
1条回答
网友
1楼 · 发布于 2024-05-23 17:11:09

使用end="",但也将此参数添加到行中

print(" ")

否则,此行将添加换行符。

也就是说,最好先收集列表中的字符,然后只调用一次print()

print("".join(list_of_characters))

另一种方法是用str.maketrans()创建一个字符转换表,并用str.translate()应用它。

相关问题 更多 >