为了账号安全,请及时绑定邮箱和手机立即绑定

Python:等待用户输入或回调,以先到者为准

Python:等待用户输入或回调,以先到者为准

HUX布斯 2021-11-23 16:44:18
我有一个等待用户输入的聊天机器人,但也有一个屏幕,用户可以在其中单击一个按钮来选择一个选项。在我的 python 代码中,我可以通过回调获得所选选项,并且我还有一个无限循环,在聊天机器人响应后等待用户输入。我想问用户一个问题,但允许他们输入答案或从屏幕中选择一个选项。所以我或多或少想要这样的东西:inp = ""while(True):    answer, end = get_answer(inp)    print('CHATBOT: '+ answer)    if end = break    if input by user:         inp = input by user    elif callback:         inp = callback value当然,用户的回调或输入可能需要一段时间才能给出,因此计时器是不可取的。我怎么能这样做?
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

您可以将线程与消息队列一起使用:


from threading import Thread

from Queue import Queue

from datetime import datetime

import time


def chatbot(queue):

    while True:

        queue.put('CHATBOT: The time is now %s' % datetime.now())

        time.sleep(5)


def user_input(queue):

    while True:

        queue.put('USER: ' + raw_input())


queue = Queue()

chatbot_thread = Thread(target=chatbot, args=(queue,))

input_thread = Thread(target=user_input, args=(queue,))

chatbot_thread.start()

input_thread.start()

while True:

    print(queue.get())

示例输入/输出:


CHATBOT: The time is now 2019-03-01 07:42:43.975000

hello world

USER: hello world

CHATBOT: The time is now 2019-03-01 07:42:48.976000

CHATBOT: The time is now 2019-03-01 07:42:53.977000

foo bar

USER: foo bar

CHATBOT: The time is now 2019-03-01 07:42:58.977000


查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信