2010-08-19 3 views
-3

Почему я получаю «недопустимый синтаксис», когда я запускаю код ниже. Python 2,7python target string key count invalid синтаксис

from string import * 

def countSubStringMatch(target,key): 
    counter=0 
    fsi=0 #fsi=find string index 
    while fsi<len(target): 
     fsi=dna.find(key,fsi)  
     if fsi!=-1: 
      counter+=1 
     else: 
      counter=0 
      fsi=fsi+1 
     fsi=fsi+1 
    #print '%s is %d times in the target string' %(key,counter) 

def countSubStringMatch("atgacatgcacaagtatgcat","atgc") 
+0

Пожалуйста, исправьте форматирование кода, используйте маленькую кнопку '101/010' –

+2

-1 Я думаю, что минимальный стандарт для заданий на вопросы SO должен заключаться в том, что ассер понимает синтаксис языка *, например * использование ключевое слово 'def'. –

ответ

5

В строке:

def countSubStringMatch("atgacatgcacaagtatgcat","atgc") 

Вы должны удалить def. def используется при определении функции, а не при ее вызове.

+0

извинения за задание такого простого вопроса, ошибка начинающего ... спасибо – raoulbia

3

Другие вещи неправильно с кодом:

  1. Вы не используете и ничего в модуле строки не нужно. Не импортируйте из него.

  2. Не делайте from somemodule import *, если у вас нет веских оснований для этого.

  3. Ваш код довольно медленно и бесцельно изо всех сил на после того, как в первый раз, что find возвращает -1 ... ваш цикл должен включать

    if fsi == -1: return counter

    так, что вы сразу же вернуться с правильного подсчета.

  4. Будьте последовательны: вы используете counter += 1 но fsi = fsi + 1

  5. ... который напоминает мне: найти 'PEP 8' (руководство по стилю) в www.python.org, и читать его - ваш пробел должен чувствовать нелюбимым ;-)

НТН
Джон

+0

Привет, Джон, спасибо за это! – raoulbia

+0

@Baba: (1) см. Мое редактирование; в задаче № 3 следует возвращать 'counter', а не' 0' (2) проблема # 6: вычислить 'len (dna)' ONCE, перед тем как ввести 'while' loop –

3

для строки кол вас просто могли бы сделать: