2017-11-09 3 views
-1

すべての引数が与えられているときに端末を通るときにうまく動作するコードがありますが、1つの引数をオプションにして実行したい「しかし、ときに、この引数のISN、引数が与えられた場合にのみIF文を実行する方法

import argparse 
import sys 
import csv 

parser= argparse.ArgumentParser() 
parser.add_argument('-r', '--range', help= 'Enter range of two m/z values in format of x,y', default= '1000,1500') 
parser.add_argument('files', nargs= '*') 
parser.add_argument('-a', '--amino_acid', help= 'Enter one letter code of amino acid you wish to search for (optional)') 
args=parser.parse_args() 



if aa in sequence: 
       amino_acids.append(str(sequence)) 

は、だから私は-aの引数が指定されている場合にのみ実行するために、「もしAAシーケンスで」パートをしたいと思います。この引数が提供されている場合IF文は、ここに私のコードですとにかくそれを実行しようとすると、それは失敗します。どんな助けでも感謝しています。

エラー:あなたが引数としてaaを提供しなかったとsequencestrあるので、

Traceback (most recent call last): 
    File "project2.py", line 32, in <module> 
    if aa in sequence: 
TypeError: 'in <string>' requires string as left operand, not NoneType 
+3

あなたの問題を簡素化し、分かりやすいように最小限のものを投稿してください。 –

+2

'aa in sequence:'がおそらく '-a'が設定されていないときは' aa'が 'None'なので、本当の問題?エラーのトレースバックを投稿してください。 "失敗する"だけでは不十分です –

+0

@ Jean-FrançoisFabre-aが提供されていない場合、IF文を無視するようにしています – CodingIsHardMan

答えて

1
if aa in sequence: 

listで働いているだろう)inは文句を言います。

デモ:

>>> None in [] 
False 
>>> None in "" 
Traceback (most recent call last): 
    File "<string>", line 301, in runcode 
    File "<interactive input>", line 1, in <module> 
TypeError: 'in <string>' requires string as left operand, not NoneType 
>>> 

だからとそれを修正:

if aa and aa in sequence: 

または(明示的なNoneテスト):

if aa is not None aa in sequence: 

のでaaが空の場合は/ None第二の条件実行されていません

+0

これはうまくいきました、ありがとう、私はそれを感謝します。 – CodingIsHardMan

関連する問題