我使用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
我知道这是愚蠢的,我忽略了。任何帮助,将不胜感激。非常感谢。
答案 0 :(得分:4)
使用end=""
,但也要将此参数添加到行
print(" ")
否则,此行将添加换行符。
那就是说,你可能最好先收集列表中的字符,然后只调用print()
一次:
print("".join(list_of_characters))
另一种方法是使用str.maketrans()
创建字符转换表,并将其应用于str.translate()
。