2017-11-09 1 views
-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'가'None'이므로'-a'가 설정되지 않았을 때'aa in sequence :'가 아마 거짓 일 때' 진짜 문제? 오류의 역 추적을 게시하십시오. "실패"는 충분하지 않다. –

+0

@ Jean-FrançoisFabre -a가 제공되지 않으면 IF 문을 그냥 무시하고 싶다. – CodingIsHardMan

답변

1
if aa in sequence: 

(A 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

관련 문제