知道这有什么问题吗?这应该是一个非常基本的加密系统。 (我是Python的新手)
def encrypt():
clear = "abc"
splitclear = split.text(clear)
dict = {"a" : "1", "b" : "2", "c" : "3"}
print(dict[splitclear])
encrypt()
它只是在ideone.com上输入运行时错误。它应该输出123。
答案 0 :(得分:1)
Split是一种String方法。你这样称呼它:
clear.split()
这会将字符串拆分为空格,而#34; abc"
中没有空格你想:
splitclear = [c for c in "abc"]
此外,您无法拨打dict[splitclear]
,因为这就像调用dict[['a','b','c']]
一样,因为列表不能是字典中的键,所以没有意义。您需要dict[splitclear[i]]
,其中i为0,1或2。
输出" 123":
def encrypt():
clear = "abc"
splitclear = [c for c in clear]
my_dict = {"a" : "1", "b" : "2", "c" : "3"}
for c in splitclear:
print(my_dict[splitclear[c]])
encrypt()
在许多情况下,字符串可以像列表一样对待,所以更简单:
def encrypt():
clear = "abc"
my_dict = {"a" : "1", "b" : "2", "c" : "3"}
for c in clear:
print(my_dict[splitclear[c]])
encrypt()
答案 1 :(得分:0)
它有一些问题:
SCNView
? split.text()
是字符串的一种方法(请参阅documentation),但这不是您调用它的方式。split
会覆盖内置dict = { ... }
。虽然这是允许的,但形式不好。dict
尝试使用print(dict[splitclear])
的密钥从dict
打印条目...这在您定义的splitclear
中不存在。试试这个。它创建dict
,然后在打印时对my_dict
中的每个字符进行查找。
clear
答案 2 :(得分:0)
这样做,编码更少,更直观:
def encrypt():
clear = 'abc'
letters = list(clear)
code = ''.join(str(letters.index(l) + 1) for l in letters)
print(code)
输出:123