我正在做代码战“以字母位置代替”基本训练挑战。我已经获得了理想的结果,但是现在的问题是我的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 ''
答案 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)