【问题标题】:Python I can't replace my string valuesPython 我无法替换我的字符串值
【发布时间】:2018-03-25 22:38:18
【问题描述】:

我正在使用 Python3 在 Visual Code Studio 中进行编程。

所以我的第一个函数生成一个 DNA 字符串,我的第二个函数应该用两个不同的字符串替换该字符串中的一对。我在这里做错了什么。 (我得到的错误始于错误的语法。)

再次感谢您的帮助。

import random as rd


def generateVirus(length):
    a = [rd.choice(["AT", "GC","TA", "CG"])for i in range(length)]
    return ("".join(a))


def mutate(virus):
    virus = [v.replace(virus[int(rd.random()*(len(virus+1))), rd.choice([virus]for v in virus]
    return virus

a = generateVirus(4)
b = virus(a)

【问题讨论】:

  • Visual Studio 不会警告您括号不平衡吗?
  • 您在以virus = 开头的行中缺少] 和)
  • rd.choice([virus]for v in virus] 应该做什么?
  • 您好,感谢您的回复,从该字符串中挑选一对替换另一对
  • 为什么不只是rd.choice(virus)?

标签: python string random indexing replace


【解决方案1】:

这看起来很平衡:

def mutate(virus):
    virus = [v.replace(virus[int(rd.random()*(len(virus+1)))]), rd.choice([virus]for v in virus)]
    return virus

但是你永远不会定义一个你调用的virus函数:

b = virus(a)

【讨论】:

  • 我怀疑是复制错了,最后一行居然是b = mutate(a)
  • 我同意,仍然,预先警告 OP。 v 也从未定义,但一次一个错误。
  • 你是对的。它必须是 b = mutate(a)
【解决方案2】:
import random as rd

dna = ["AT", "GC","TA", "CG"]
def generateVirus(length):
    a = [rd.choice(dna)for i in range(length)]
    return ("".join(a))

def mutate(virus):
    start = int(rd.random()*(len(virus)/2)) *2
    replacement = rd.choice(["AT", "GC","TA", "CG"])
    newvirus = virus[0:start] + replacement + virus[start+2:]
    return newvirus



a = generateVirus(4)
b = mutate(a)
print(a) 
print (b)

现在可以使用了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2016-08-26
    • 2023-04-01
    相关资源
    最近更新 更多