0

私はこれらの2つの機能を持っています:

def MatchRNA(RNA, start1, end1, start2, end2):
    Subsequence1 = RNA[start1:end1+1]
    if start1 > end1:
        Subsequence1 = RNA[start1:end1-1:-1]
    Subsequence2 = RNA[start2:end2+1]
    if start2 > end2:
        Subsequence2 = RNA[start2:end2-1:-1]
    return Subsequence1, Subsequence2


def main():
    RNA_1_list = ['A','U','G','U','G','G','G','U','C','C','A','C','G','A','C','U','C','G','U','C','G','U','C','U','A','C','U','A','G','A']
    RNA_2_list = ['C','U','G','A','C','G','A','C','U','A','U','A','A','G','G','G','U','C','A','A','G','C']
    RNA_Values = {'A': 1, 'U': 2, 'C': 3, 'G': 4}
    RNA1 = []
    RNA2 = []
    for i in RNA_1_list:
        if i in RNA_Values:
            RNA1.append(RNA_Values[i])
    for i in RNA_2_list:
        if i in RNA_Values:
            RNA2.append(RNA_Values[i])
    RNA = list(input("Which strand of RNA (RNA1 or RNA2) are you sequencing? "))       
    Start1, End1, Start2, End2 = eval(input("What are the start and end values (Start1, End1, Start2, End2) for the subsequences of the strand? "))
    Sub1, Sub2 = MatchRNA(RNA, Start1, End1, Start2, End2)
    print(Sub1)
    print(Sub2)

したがって、メイン関数を実行し、入力として (たとえば) を与えると、RNA1、3、14、17、28 の 2 つのリストが出力され[2,4,4,4,2,3,3,1,3,4,1,3]ます[4,2,3,4,2,3,2,1,3,2,1,4]。このコードをテストしていたとき、私はうっかり Python 2.7 を使用していましたが、(その eval がなくても) 正常に動作しましたが、3.3 で実行すると (そして eval を元に戻すと)、2 つのリスト ['1'] が出力されます。と []。3.3 で動作しない理由や、3.3 で動作させる方法を知っている人はいますか? 前もって感謝します。

4

2 に答える 2

0

閉じますが、問題の主な原因は次のとおりです。

 RNA = list(input("Which strand of RNA (RNA1 or RNA2) are you sequencing? "))

そこへのlist()呼びかけはとにかく無駄。

Python2 では、 を入力するRNA1と、input()はそのシンボルを評価し、 にバインドされたリストを返しますRNA1

Python3 では、無意味な ;-)に変わる文字列input()を返します "RNA1"list()

['R', 'N', 'A', '1']

両方のバージョンで実行するようにコードを変更する 1 つの方法: 最初にこれを先頭に追加します。

try:
    raw_input
except:  # Python 3
    raw_input = input

次に、入力行を変更します。

RNA = eval(raw_input("Which strand of RNA (RNA1 or RNA2) are you sequencing? "))
Start1, End1, Start2, End2 = eval(raw_input("What are the start and end values (Start1, End1, Start2, End2) for the subsequences of the strand? "))
于 2013-11-02T20:43:54.220 に答える