簡體   English   中英

我在python中比較字符串不起作用

[英]my comparing of strings in python not working

我是初學者,我正在編寫一個簡單的Python程序,將RNA序列轉換為蛋白質密碼子。 因此,我有一個RNA字符串,每3個字母(例如UUU)取一個,並將其轉換為與之關聯的蛋白質密碼子。 因此,“ UUU”轉換為“ F”,“ UUA”轉換為“ L”,依此類推。 這是我的代碼:

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

這是輸出:

UUA
0
UUG
3
UUU
6
UUC
9
FFFF

因此問題似乎是3個RNA字母的每個子串似乎對於第一個IF語句都是正確的,因此即使輸出應為“ AAFF”,所有3個RNA字母集都轉換為“ F”?

誰能告訴我這是為什么,我該如何解決? 我看了四周,有使用之間的差異==並且is在Python比較字符串時,因為他們中的條件意味着不同的事情,但我不認為這是問題,因為當我試圖取代我的==is ,在發生相同的輸出。

謝謝!

if sub_str=="UUU" or "UUC":

應該寫成

if sub_str=="UUU" or sub_str=="UUC":

要么

if sub_str in ("UUU", "UUC"):

在后者中,括號可以替換為方括號或花括號。 由於您的情況沒有實際差異,因此我不再贅述。

您現在擁有的內容在語法上是有效的,但沒有按照您的預期做。 它等效於:

if (sub_str=="UUU") or bool("UUC"):

並且始終求值為True (因為bool("UUC")True )。

(所有這些也適用於elif比較。)

問題是這樣的:

if sub_str=="UUU" or "UUC":
    ...

許多初學者經常犯的一個錯誤是假設這意味着“如果sub_str等於“ UUU”或“ UUC”,則繼續執行”。 實際上,這實際上意味着“如果sub_str等於“ UUU”或“ UUC”的值為真值,則繼續”。

由於“ UUC”被視為“ True”,因此您的第一個“ if”語句將始終執行。

您可以通過以下方法解決此問題:

if sub_str == "UUU" or sub_str == "UUC":

...或通過執行以下操作:

if sub_str in ("UUU", "UUC"):

...這是一個不錯的捷徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM