※ 引述《eric2853 (eric)》之铭言:
: 大家好
: 我是一个刚学python没多久的初学者
: 因为本身是生物相关背景 所以未来想利用python做一些比较跟计算
: 例如我想要比较两个DNA序列中 有哪些不一样的地方
: 若是序列相同 则将他取代成"."
: 例如
: a = "atcgatcgaaa"
: b = "atccagcgaac"
: 则print出 两段序列
: "...g.t....a"
: "...c.g....c"
: 以下是我的练习code:
: a = "atcgatcgaaa"
: b = "atccagcgaac"
这边for的用法有问题 python循环可以用集合的概念来想
for [element] in [set]:
#....
碰到不熟的语言 你可以用print去确认你的code到底发生了什么事
for i in a[i]:
print (i) # print element in set a[i]
: for i in a[i]: #利用元素位置去找
你似乎不太清楚i变量到底代表什么
: if a[i] == b[i]: # 你在这边把i当成数字
: c = a.replace(i,".") # 你在这边把i当char
: d = b.replace(i,".")
另外我不建议你使用replace,他会取代复数个字
: print(c,d)
: 可是都会出现错误代码 string indices must be integers
: 我其实看不太懂他想表达的意思
: 请问各位前辈我该如何改我的code
: 非常谢谢大家
最后附上弱弱的code
a = "atcgatcgaaa"
b = "atccagcgaac"
a_list = list(a) # List是python很基础的结构 建议熟悉它
b_list = list(b) # 转成List是因为list才能作assign的操作 (a_list[i] = '.')
for i in range(len(a)): # 在这边我把i当数字,请注意a长度必需与b相等
if a_list[i] == b_list[i]:
a_list[i] = '.'
b_list[i] = '.'
a = "".join(a_list) # 将list转回string
b = "".join(b_list)
print(a)
print(b)