join()返回列表而不是字符串

时间:2019-06-30 00:13:56

标签: python string

我正在做代码战“以字母位置代替”基本训练挑战。我已经获得了理想的结果,但是现在的问题是我的return语句将结果返回到列表([])中,而不是字符串本身。

我发现本教程说要使用join方法(https://www.programiz.com/python-programming/methods/string/join),但是当我尝试使用该方法时,它并不仅仅是给我联接值。

以下是说明:

  

欢迎。

     

在此kata中,您需要给定一个字符串,替换每个字母   在字母表中的位置。

     

如果文本中的任何内容都不是字母,请忽略它,不要返回它。

     

“ a” = 1,“ b” = 2,依此类推

     

示例

     

alphabet_position(“日落在十二点钟开始。”)

     

应返回“ 20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5   15 3 12 15 3 11“(作为字符串)

这是我的代码:

def alphabet_position(text):
    text = text.lower()
    print(text)
    alphabet = {
        'a':1,
        'b':2,
        'c':3,
        'd':4,
        'e':5,
        'f':6,
        'g':7,
        'h':8,
        'i':9,
        'j':10,
        'k':11,
        'l':12,
        'm':13,
        'n':14,
        'o':15,
        'p':16,
        'q':17,
        'r':18,
        's':19,
        't':20,
        'u':21,
        'v':22,
        'w':23,
        'x':24,
        'y':25,
        'z':26
    }

    new_string = []

    for char in text:
        if char.isalpha():
            new_string.append(alphabet.get(char))
    return ''.join(str(new_string))

以下是输出:

Time: 801ms Passed: 0 Failed: 3 Exit Code: 1
Test Results:
Log
the sunset sets at twelve o' clock.
'[20, 8, 5, 19, 21, 14, 19, 5, 20, 19, 5, 20, 19, 1, 20, 20, 23, 5, 12, 22, 5, 15, 3, 12, 15, 3, 11]' should equal '20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11'
Log
the narwhal bacons at midnight.
'[20, 8, 5, 14, 1, 18, 23, 8, 1, 12, 2, 1, 3, 15, 14, 19, 1, 20, 13, 9, 4, 14, 9, 7, 8, 20]' should equal '20 8 5 14 1 18 23 8 1 12 2 1 3 15 14 19 1 20 13 9 4 14 9 7 8 20'
Log
6479121244
'[]' should equal ''

1 个答案:

答案 0 :(得分:2)

.join()需要一个字符串列表,但是alphabet.get(char)返回一个int,因此new_string是一个int列表。您需要将对str()的呼叫移至上一行,如下所示:

for char in text:
    if char.isalpha():
        new_string.append(str(alphabet.get(char)))
return ''.join(new_string)