如果给出一个参数,如何只执行IF语句

时间:2017-11-09 13:33:51

标签: python if-statement argparse python-3.6

我有一段代码,当它通过终端运行时,它提供了所有参数,但是我希望一个参数是可选的,并且如果提供了这个参数,只运行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))

所以我希望"如果aa顺序"如果给出-a arg,则只执行part,但是如果没有给出该参数,则无论如何它都会尝试运行它并失败。任何帮助表示赞赏,谢谢。

错误:

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

1 个答案:

答案 0 :(得分:1)

if aa in sequence:

因为您没有提供aa作为参数,而sequencestr(可能会使用listin投诉。

演示:

>>> 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,则第二个条件不会被执行