Python 3:将多行打印到一行

时间:2012-09-16 23:07:27

标签: python python-3.x

我使用Google计算机搜索了Stackoverflow和其他网站上的主题,没有什么能让我满意。

我是使用Python 3的新编程学生,所以我的大多数东西都非常基础。

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

这就是我现在正在处理的事情:

有些代码只是作为占位符存在,直到我进一步深入到我的程序中。

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")

当我输入一个测试短语,例如“这是一个测试”时,它给出了输出,加密正确,但它显示如下:

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

我知道这是愚蠢的,我忽略了。任何帮助,将不胜感激。非常感谢。

1 个答案:

答案 0 :(得分:4)

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

print(" ")

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

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

print("".join(list_of_characters))

另一种方法是使用str.maketrans()创建字符转换表,并将其应用于str.translate()