首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我对python中字符串的比较不起作用

我对python中字符串的比较不起作用
EN

Stack Overflow用户
提问于 2014-09-09 14:08:01
回答 2查看 86关注 0票数 0

我是初学者,我正在写一个简单的Python程序将RNA序列转换为蛋白质密码子。因此,我有一个RNA字符串,我每3个字母(如UUU)取一次,并将其转换为与之相关的蛋白质密码子。因此"UUU“转换为"F","UUA”转换为"L“,依此类推。下面是我的代码:

代码语言:javascript
运行
复制
my_rna="UUAUUGUUUUUC"
my_protein=""
for i in xrange(0,len(my_rna),3):
    sub_str = my_rna[i:(i+3)]
    print sub_str
    if sub_str=="UUU" or "UUC":
        my_protein +="F"
    elif sub_str=="UUA" or "UUG":
        my_protein +="L"
    else:
        print "No match"
    print i

print my_protein

这是输出:

代码语言:javascript
运行
复制
UUA
0
UUG
3
UUU
6
UUC
9
FFFF

所以问题似乎是,对于第一个IF语句,3个RNA字母的每个子串似乎都是真的,所以所有RNA 3个字母集都转换为"F“,即使输出应该是"AAFF"?

有人能告诉我为什么会这样吗?我怎样才能修复它呢?我仔细阅读了一下,在Python语言中比较字符串时,使用==is是有区别的,因为它们在条件中的含义不同,但是我不认为这是问题所在,因为当我尝试用is替换我的==时,结果是相同的。

谢谢!

EN

Stack Overflow用户

发布于 2014-09-09 14:11:26

问题是:

代码语言:javascript
运行
复制
if sub_str=="UUU" or "UUC":
    ...

许多初学者常犯的一个错误是认为这意味着“如果sub_str等于"UUU”或“UUC”则继续“。实际上,这实际上意味着‘如果sub_str等于"UUU“或者如果"UUC”计算为真值,则继续“。

由于"UUC“被视为”True“,因此您的第一个”if“语句将始终执行。

您可以通过执行以下任一操作来修复此问题:

代码语言:javascript
运行
复制
if sub_str == "UUU" or sub_str == "UUC":

通过执行以下操作来...or:

代码语言:javascript
运行
复制
if sub_str in ("UUU", "UUC"):

...which是一个很好的捷径。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25737683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档