如何用python, flask通过chatbox的介面取代单机terminal的input与output功能?

各位好,我是医学相关领域从业者,学习python仅5个月左右,没有其他程序的经验。日前写了一个含有大量decision tree的python script,用途是搜集参数,然后根据参数与预先设定好的决策路径发出一系列提问,每个提问都会给出预设好的选项予以选择,然后根据这些选择,透过matplotlib与reportlab得出结论与报告。由于在单机的terminal上面可以容易的看到问题的输出以及拥有输入的能力(也就是input),但如果我想把这个script透过flask转换到web上面供他人使用,似乎就缺乏terminal的介面可以做出人机交互的功能。有教程教导如何透过多个文字框的输入采集参数,然后可以一键得出报告或科学图像,但我需要的是一连串的问与答的交互过程才能完成搜集参数的工作,想请问一下是否有建议的方式与学习的方向?我这几天在网络上搜寻许久,在想也许可以透过chatbot的介面,以rule based的方式得到想要的功能,但似乎网络上的教程都是关于AI的人机互动,而非预设好的决策路径,请问是否有建议获推荐的方法或是学习的方向?谢谢大家!

David

Hello! 如果决策流程固定的话,那么或许可以每一个问题写一个视图函数来处理。如果方便提供一个最简单的使用 input 函数的几个问题处理流程的示例代码的话,我可以再进一步考虑看看怎么实现比较好。

谢谢greyli的回应,由于代码内容有点多,我尽可能用简化的方式来说明代码的状况:

dict = {}
list = []
    .
    . #建立一些空白的dict与list,接收参数使用
    .

#一开始利用爬虫的方式或手动input的方式把参数放到dict里面

value1 = input('please enter value of value1')
dict['value1']=value1
value2 = input('please enter value of value1')
dict['value2']=value2
                                .
                                .#中间有其他类似的输入
                                .

#下面开始经过许多问答来建立其他参数,用于后面一些问题的计算使用
while True:
    try: 
        person = input(\n'please chose a person:\n1. A \n2. B\n3. C\n4. D\n')
        if int(person) in range(1,4):
            break
        else:
            print('please enter designated number')
    except Exception:
        print('please enter designated number')                          
                                  .
                                  .  #中间有其他类似的输入
                                  .
while True:
    E = input('\abcdef:\n1. A1\n2. A2\n3. A3\n4. A4\n')
        if E == '1':
            list.append('ghijkl。')
            break
        elif E == '2':
            list.append('mnopqr。')
            break
        elif E == '3':
            list.append('stuvw')
            break
        elif E == '4':
            list.append('xyz')
            break
        else:
            print('\nPlease enter designated number\n')
                                           .
                                           .#中间还有大量类似、甚至深度鉗套的判斷句
                                           .#有些是自动判断不需输入,有些需要给予input
                                           .

上面的代码主要目的是根据起始参数与判断句来收集所需要的dict和list,最后再透过matplotlib将起始参数图像化,结合reportlab打印出来。会需要互动的地方就是在上方的示例代码的部分。`

因为代码有数千行,所以用这种方式来简化呈现大概的架构,如果还需要其他的资料我会想办法提供,谢谢@greyli