'Пока верно' l oop не запускается - PullRequest
1 голос
/ 19 апреля 2020

Мой код:

def make_response(self):
    recognised = False
    get_cmd = False
    database = {
        "hello": "Nice to meet you. What can I do for you?",
        "hi": "Nice to meet you. What can I do for you?",
        "hey": "Nice to meet you. What can I do for you?",
        "goodbye": "Bye. See you next time!"
    }

    self = self.lower()

    for i in database:
        if i in self:
            recognised = True
            value = database.get(i)
            print(value)


def robot():
    print('Welcome to robot.py')
    print('What can I do for you?')

    while True:
        query = input('>')
        make_response(query)


robot()

Когда я ввожу "привет", программа дает ожидаемый ответ, но она просто завершается, не завершив l oop. Какая линия сломала l oop ?? Спасибо.

Ответы [ 4 ]

1 голос
/ 19 апреля 2020

В Python 3.х, отлично работает.

Возможно, вы компилируете с python 2.x. В этом случае вам нужно использовать «raw_input» вместо «input», но я не рекомендую raw_input (он устарел в Python3).

Попробуйте Python 3.x.

PS: Также я бы заменил 'self' на другое имя переменной. Self используется в классах.

1 голос
/ 19 апреля 2020

не ломается. Пожалуйста, подтвердите ваше решение. Вот модифицированный код

database = {
        "hello": "Nice to meet you. What can I do for you?",
        "hi": "Nice to meet you. What can I do for you?",
        "hey": "Nice to meet you. What can I do for you?",
        "goodbye": "Bye. See you next time!"
    }


def make_response(self):
    self = self.lower()
    value = database.get(self, "Sorry I dont understand")
    print(value)


def robot():
    print('Welcome to robot.py')
    print('What can I do for you?')

    while True:
        query = input('>')

        if query == "goodbye":
            value = database.get(query)
            print(value)
            break
        else:
            make_response(query)

robot()

0 голосов
/ 19 апреля 2020

Этот код прекрасно работает на моей машине. Но проблемы с Python 2.7 версией. Я предпочитаю, чтобы вы работали с Python 3.6 или выше.

Вот упрощенный код.

Код:

def make_response():
  database = {
        "hello": "Nice to meet you. What can I do for you",
        "hi": "Nice to meet you. What can I do for you?",
        "hey": "Nice to meet you. What can I do for you?",
        "goodbye": "Bye. See you next time!"
      }
  return database

def robot():
    print('Welcome to robot.py')
    print('What can I do for you?')

    while True:
        query = str(input('>'))
        database = make_response()
        if query in list(database.keys()):
            print(database[query])

robot() 

Проверьте это вне. Я надеюсь, что это будет полезно.

0 голосов
/ 19 апреля 2020

Я совершенно не могу воспроизвести это. Он продолжает запрашивать новые входные данные, как и в коде.

В качестве небольшого упрощения здесь используется dict.items():

database = {
    "hello": "Nice to meet you. What can I do for you?",
    "hi": "Nice to meet you. What can I do for you?",
    "hey": "Nice to meet you. What can I do for you?",
    "goodbye": "Bye. See you next time!",
}


def make_response(query):
    query = query.lower()
    for keyword, answer in database.items():
        if keyword in query:
            print(answer)
            break


def robot():
    print("Welcome to robot.py")
    print("What can I do for you?")

    while True:
        query = input(">")
        make_response(query)


robot()
...