我不知道我做了什么 - 这是错的。 有人能帮助我吗?
def insert_sequence(dna1, dna2, number):
'''(str, str, int) -> str
Return the DNA sequence obtained by inserting the second DNA sequence
at the given index. (You can assume that the index is valid.)
>>> insert_sequence('CCGG', 'AT', 2)
'CCATGG'
>>> insert_sequence('TTGC', 'GG', 2)
'TTGGGC'
'''
index = 0
result = '';
for string in dna1:
if index == number:
result = result + dna2
result = result + string
index += 1
print(result)
答案 0 :(得分:1)
这是一个解决方案:
def insert_sequence(dna1, dna2, number):
'''(str, str, int) -> str
Return the DNA sequence obtained by inserting the second DNA sequence
at the given index. (You can assume that the index is valid.)
>>> insert_sequence('CCGG', 'AT', 2)
'CCATGG'
>>> insert_sequence('TTGC', 'GG', 2)
'TTGGGC'
'''
return dna1[:number] + dna2 + dna1[number:]
答案 1 :(得分:1)
你需要一个if-else
循环:
def insert_sequence(dna1, dna2, number):
result = '';
#you can use enumerate() to keep track of index you're on
for ind,x in enumerate(dna1):
if ind == number: #if index is equal to number then do this
result = result + dna2 +x
else: #otherwise do this
result = result + x
print(result)
insert_sequence('CCGG', 'AT', 2)
insert_sequence('TTGC', 'GG', 2)
<强>输出:强>
CCATGG
TTGGGC
答案 2 :(得分:1)
其他答案中已有正确的工作功能(特别是Rakesh Pandit的评论和JeffS的回答),但您的实际问题是“为什么我的原始功能不起作用”。
我复制了你的函数的工作版本,评论如下:
def insert_sequence(dna1, dna2, number):
index = 0
result = ''
for character in dna1:
if index == number:
result = result + dna2
result = result + character
index += 1
print(result)
Python考虑缩进,因此您应该只在事物的末尾,外部循环和ifs打印。 当你“增加”你的结果时,你只在你的函数的“if”中执行此操作,实际上你应该增加“dna1中的每个字符”,并且只有在/“if index == number”时你应该放在中间字符串里面。
我相信你对Python或一般的编程都很陌生,可能来自生物学背景,但你真的不应该迭代来完成这种类型的字符串操作,就像其他人已经表明的那样。
希望这有帮助!
答案 3 :(得分:0)
你永远不会将字符串分开,所以你总是将dna2添加到dna1。
您可能想要return dna1[:number] + dna2 + dna1[number:]
答案 4 :(得分:0)
如果索引不在插入点,则不执行任何操作,包括递增索引。您的代码需要其他内容,而且您也在过早打印:
def insert_sequence(dna1, dna2, number):
index = 0
result = '';
for char in dna1:
if index == number:
result = result + dna2
result = result + char
index += len(dna2) + 1
else:
result = result + char
index += 1
print(result)
答案 5 :(得分:0)
错误:a)参数索引初始化为0. b)“对于dia1中的sting:”应该是“for dia1_position in range(len(dia1)):”c)打印结果缩进错误且函数isn不应该打印。它应该返回结果。 d)索引现在不需要递增。
答案已经存在。上面简要列出了所犯的错误。我猜你没有看到任何错误,因为你从未调用过该函数。第一个错误应该是“数字”未定义(不再是问题已更新且参数已定义数字)。