Python区分错误

Python区分错误,python,if-statement,Python,If Statement,我正在写一个程序,读取两个相同(字符串)长度的蛋白质,并返回多少氨基酸字母是不同的。我成功地编写了部分代码,但不幸的是无法完成所有的代码,因此请任何人通过查看我的代码来引导我完成这项工作: a = raw_input("Cheetah protein: ") b = raw_input("Domestic cat protein: ") u=zip(a,b) d=dict(u) x = 1 for i,j in d.items(): if i == j: x = x +

我正在写一个程序,读取两个相同(字符串)长度的蛋白质,并返回多少氨基酸字母是不同的。我成功地编写了部分代码,但不幸的是无法完成所有的代码,因此请任何人通过查看我的代码来引导我完成这项工作:

a = raw_input("Cheetah protein: ")
b = raw_input("Domestic cat protein: ")
u=zip(a,b)
d=dict(u)
x = 1
for i,j in d.items(): 
    if i == j:
        x = x + 1   
print x
这是我想要产生的输出:

Cheetah protein: IGADKYFHARGNYDAA
Domestic cat protein: KGADKYFHARGNYEAA
2 difference(s).

我认为你应该更好地描述你正在努力实现的目标。我不明白这张支票:

if i == j:
如果要检查差异,应改为写:

if i != j:
在此修复之后,您的代码为您的猫和猎豹示例提供了3个差异-您确定示例正确吗

编辑:好的,我看到您从一开始计算差异。换线

x = 1


我不认为你想假设总有至少一个不同;-)

我认为你应该更好地描述你正在努力实现的目标。我不明白这张支票:

if i == j:
如果要检查差异,应改为写:

if i != j:
在此修复之后,您的代码为您的猫和猎豹示例提供了3个差异-您确定示例正确吗

编辑:好的,我看到您从一开始计算差异。换线

x = 1


我不认为你想假设总有至少一个不同;-)

不同的蛋白质有不同的氨基酸序列(“字母”),但长度也不同。没有答案处理好这件事,因为你没有要求。回答你的问题:

>>> a="IGADKYFHARGNYDAA"
>>> b="KGADKYFHARGNYEAA"
>>> sum(1 for x, y in zip(a,b) if x!=y)
2
我使用“生成器表达式”为每对不同的氨基酸生成一个数字,并对其进行总结。现在,如果您想使用类似的方法发现改变的氨基酸:

>>> diff = ''.join('-' if x==y else y for x, y in zip(a,b))
>>> print 'A:', a, '\nB:', diff
A: IGADKYFHARGNYDAA
B: K------------E--

不同的蛋白质有不同的氨基酸序列(“字母”),但长度也不同。没有答案处理好这件事,因为你没有要求。回答你的问题:

>>> a="IGADKYFHARGNYDAA"
>>> b="KGADKYFHARGNYEAA"
>>> sum(1 for x, y in zip(a,b) if x!=y)
2
我使用“生成器表达式”为每对不同的氨基酸生成一个数字,并对其进行总结。现在,如果您想使用类似的方法发现改变的氨基酸:

>>> diff = ''.join('-' if x==y else y for x, y in zip(a,b))
>>> print 'A:', a, '\nB:', diff
A: IGADKYFHARGNYDAA
B: K------------E--

是的,你可以通过比较两者来自己检查是的,你可以通过比较两者来自己检查和/或技巧是非常过时的,而且几乎没有比仅仅使用
x!=y
。另外,只使用生成器表达式比调用
map
@Karl更简单,是什么让and/or技巧变得非常过时?我觉得这是一种得心应手的表达,而不是一种自我陈述。还有,是什么让生成器表达式比映射更简单(更直接)?and/or技巧已经过时得令人难以置信,而且几乎没有比仅使用
x!的算术值更清楚的了y
。另外,只使用生成器表达式比调用
map
@Karl更简单,是什么让and/or技巧变得非常过时?我觉得这是一种得心应手的表达,而不是一种自我陈述。还有,是什么让生成器表达式比映射更简单(更直接)?