2012-10-20 13 views
12
def contains_sequence(dna1, dna2): 
    ''' (str, str) -> bool 

    Return True if and only if DNA sequence dna2 occurs in the DNA sequence 
    dna1. 

    >>> contains_sequence('ATCGGC', 'GG') 
    True 
    >>> contains_sequence('ATCGGC', 'GT') 
    False 

    ''' 
    b=False 
    len2=len(dna2) 
    i=0 
    for j in dna1: 
     temp=dna1[i:i+len2] 
     if temp == dna2: 
      b=True 
     i=i+1 
    return b 

मैं पायथन के लिए नया हूं। उपरोक्त चिपकाया गया प्रोग्राम मुझे "इंडेक्स में टैब और रिक्त स्थान का असंगत उपयोग" त्रुटि देता है, यदि विशेष रूप से "temp == dna2:" है। क्या कोई मेरी मदद कर सकता है कि इंडेंटेशन गलत कैसे है?इंडेंटेशन में टैब और रिक्त स्थान का असंगत उपयोग

+2

में अभ्यास करने के लिए अच्छा है उपरोक्त कोड में, हम स्थान नहीं देख सकते , अलग-अलग टैब। आप 'cat -evt 'के आउटपुट पोस्ट करना चाहते हैं जो स्पेस, टैब अलग से दिखाएगा। – Rohan

उत्तर

19

इसका मतलब है कि आपने इंडेंटेशन में रिक्त स्थान और टैब मिश्रित किए हैं। आपको टैब या रिक्त स्थान के साथ संगत होने के लिए इसे ठीक करना होगा।

+0

कोई भी जानता है कि विम के साथ तेजी से कैसे ठीक किया जाए? – jb1

+0

@ jb1 "vim कन्वर्ट टैब रिक्त स्थान" के लिए खोजना आपको [यह प्रश्न] (https://stackoverflow.com/q/426963/216074) दिया होगा। – poke

+0

हम शायद इसे एक ही समय में मिला, धन्यवाद: ^) – jb1

1

मान लें कि आपके पास "अच्छा" आईडीई है, टैब टैब की बजाय 4 रिक्त स्थान बनाने के लिए टैब कुंजी सेट करना सबसे अच्छा है, इस तरह आपको कम समस्याएं हैं, और यह अच्छी प्रैक्टिस है, क्योंकि जब आप दूसरे के साथ काम करेंगे लोग।

+0

+1 केवल 4 रिक्त स्थान का उपयोग किया जाना चाहिए –

4

यदि आप लाइनों

temp=dna1[i:i+len2] 
    if temp == dna2: 

अपने कोड में पर ध्यान से देखो, आप देखेंगे कि प्रत्येक पंक्ति के आरंभ में "अंतरिक्ष" "का निर्माण" है अलग ढंग से देखेंगे। एक मामले में यह टैब और अन्य रिक्त स्थानों में उपयोग करता है, या, यदि दोनों टैब और रिक्त स्थान हैं तो उन्हें विभिन्न संयोजनों में उपयोग किया जाता है।

आप प्रत्येक कर्सर की शुरुआत में अपना कर्सर रखकर और वर्णों के माध्यम से अपना रास्ता "चलने" के लिए दायां तीर कुंजी का उपयोग करके इसकी जांच कर सकते हैं। आप देखेंगे कि कर्सर प्रत्येक पंक्ति पर अलग-अलग चलता है।

प्रत्येक पंक्ति की शुरुआत में टैब और रिक्त स्थान को ठीक करने के लिए, उन्हें प्रत्येक पंक्ति पर एक ही वर्ण के साथ दोबारा डालें।

भविष्य में बचने के लिए, केवल टैब कुंजी या इंडेंट के लिए स्पेस कुंजी का उपयोग करने के लिए स्वयं को प्रशिक्षित करें, और टैब को रिक्त स्थान पर स्वचालित रूप से परिवर्तित करने के लिए अपने संपादक को सेट करने पर विचार करें।

+0

धन्यवाद दस लाख। त्रुटि संदेश मुझे मार रहा था। आपके उत्तर में मदद की :) आपको आशीर्वाद दें। – urwaCFC

0

अपने डॉक्टर तार

के अनुसार

अपने कोड:

b=False 
len2=len(dna2) 
i=0 
for j in dna1: 
    temp=dna1[i:i+len2] 
    if temp == dna2: 
     b=True 
    i=i+1 
return b 

यह बहुत बड़ी कोड एक पंक्ति

return dna1.find(dna2)>=0 

इसके अलावा, अगर यू में indentations के साथ अच्छा नहीं कर रहे हैं करने के लिए सरल किया जा सकता 'vim' संपादक IDLE3

संबंधित मुद्दे