Возникли проблемы с Learn Python Упражнение «Трудный путь» 48 - PullRequest
0 голосов
/ 30 июля 2011

В этом разделе нам дан ряд модульных тестов, и нам нужно создать функцию, которая сделает тесты успешными. Вот тест:

from nose.tools import *
from testing import *


def test_numbers():
    assert_equal(scan("1234"), [('number', 1234)])
    result = scan("3 91234")
    assert_equal(result, [('number', 3),
                      ('number', 91234)])

Есть и другие аспекты тестов, но это единственный, который не проходит. Вот что я написал:

def convert_number(s):
    try: 
        return int(s)
    except ValueError:
        return None

def scan(s):

    direction_words= ("north", "south", "east", "west", "down", "up", "left", "right", "back")
    verbs= ("go", "stop", "kill", "eat")
    stop_words= ("the", "in", "of", "from", "at", "it")
    nouns= ("door", "bear", "princess", "cabinet")        
    numbers= s.split()
    i=0
    j=0
    g=0
    m=0
    a=0


    while a< len(numbers):
        if  type(convert_number(numbers[a])) == int:
            return [('number', int(x) ) for x in s.split()]
        else:
            a += 1


    while i < 9:
        if direction_words[i] in s.split():
            return [('direction', x ) for x in s.split()]
        else:
            i+=1              

    while j < 4:
        if verbs[j] in s.split():
            return [('verb', x ) for x in s.split()]
        else:
            j+=1

    while g < 6:
         if stop_words[g] in s.split():
             return [('stop', x ) for x in s.split()]
         else:
            g+=1

    while m < 4:
         if nouns[m] in s.split():
             return [('noun', x ) for x in s.split()] 
        else:
            m+=1

    else:
        return 

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Просто добавьте @staticmethod выше def scan(s):, чтобы оно заработало.

0 голосов
/ 30 июля 2011

Я подозреваю, что вы, безусловно, хотите def scan(self, s): вместо def scan(s):.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...