解码回溯消息

时间:2018-10-16 12:43:15

标签: python

作为Hackerrank的Python练习代码的一部分,我正在尝试解决Mutation问题,该问题在下面引用。

  

读取给定的字符串,在给定的索引处更改字符,然后打印修改后的字符串。

这是我想出的代码:

string = 'audiophile'
character = 'u'
position = 5

def mutate_string(string, position, character):
    string = string[:int(position)] + {} + string[int(position)+1:].format(character)
    return string

mutate_string(string, position, character)

它引发一条TypeError: must be str, not dict,下面是整条Traceback消息:

Traceback (most recent call last):
  File "mutations.py", line 13, in <module>
    mutate_string(string, position, character)
  File "mutations.py", line 6, in mutate_string
    string = string[:int(position)] + {} + string[int(position)+1:].format(str(character))
TypeError: must be str, not dict

我正在尝试解码和理解Traceback消息,以便我可以继续进行代码操作。如果我能对我编写代码的方法提出一些建议,那也很好。

2 个答案:

答案 0 :(得分:1)

您步入正轨,但您的罪税是错误的

这里应该是这样:

string = 'audiophile'
character = 'u'
position = 5

def mutate_string(string, position, character):
    string = string[:int(position)] + '{}'.format(character) + string[int(position)+1:]
    return string

mutate_string(string, position, character)

format()是一个String()类函数,这就是您的代码无法正常工作的原因

我希望它能帮助

答案 1 :(得分:0)

我认为使用这样的格式方法更容易理解和理解:

string = 'audiophile'
character = 'u'
position = 5


def mutate_string(string, position, character):
    string = '{0}{1}{2}'.format(string[:position], character, string[position+1:])
    return string


mutate_string(string, position, character)

回溯本身是由您的串联中的{}引起的。它不在方括号内,因此被解释为空字典。一旦您尝试将其添加到子字符串中,Python解释器就会保释。