作为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
消息,以便我可以继续进行代码操作。如果我能对我编写代码的方法提出一些建议,那也很好。
答案 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解释器就会保释。