如果给定参数,如何仅执行IF语句

2024-04-18 12:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,当在终端上运行时,如果提供了所有参数,它就可以正常工作,但是我希望有一个参数是可选的,如果提供了这个参数,则只运行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))

因此,我希望“if aa in sequence”部分仅在给定-a arg的情况下执行,但是当没有给定此参数时,它会尝试运行它,但失败了。谢谢您的帮助。你知道吗

错误:

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

Tags: of代码inimportaddparser参数if
1条回答
网友
1楼 · 发布于 2024-04-18 12:58:01
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,则第二个条件不会执行

相关问题 更多 >