知道这段代码有什么问题吗?

时间:2015-12-07 20:34:56

标签: python

知道这有什么问题吗?这应该是一个非常基本的加密系统。 (我是Python的新手)

def encrypt():
    clear = "abc"
    splitclear = split.text(clear)
    dict = {"a" : "1", "b" : "2", "c" : "3"}
    print(dict[splitclear])

encrypt()

它只是在ideone.com上输入运行时错误。它应该输出123。

3 个答案:

答案 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)

它有一些问题:

  • 什么是SCNViewsplit.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