人机交互程序 python实现人机对话

自己随便写了一个人机交互的程序。不存在任何智能,只是可以识别姓名,可以记录对话内容,并保存等到下一次交互时加载。 (推荐面向对象版本)

# hello.py
# 这是老早写的。不过今天加入了Pickle,然后润色了一下。
# 可能有点无聊(不推荐使用) 

import pickle
import os.path 

def search(x, data):
  for k, d in enumerate(data):
    if x == d['name']:
      return k, d 

def save_data(A,pklname):
  with open(pklname, 'wb') as pkl:
    pickle.dump(A, pkl) 

def load_data(pklname):
  with open(pklname, 'rb') as pkl:
    return pickle.load(pkl) 

# communicating with computer
data=[] if not os.path.isfile('data') else load_data('data') 

while True:
  print('Welcome! [type "quit" if you want to quit.]')
  name=input('--What is your name?\n--')
  if name in {'quit','Quit','q','Q'}:
    print('[You quit]')
    break
  if not search(name, data):
    print('--Welcome, '+name+ '. I will remember you name.')
    d={'name':name,'age':0,'history':[]}
    data.append(d)
  else:
    print('--Hi, '+name+'. How I miss you.') 

  k, d=search(name, data)
  while d['age']==0:
    age=input('--How old are you?[I will repeat until you respond!]')
    try:
      if int(age)==0: continue
      d['age']=int(age); data[k]=d
    except:
      pass
  while True:
    y=input('--Chan I help you? [yes/no]')
    while not y:
      y=input('--Yes or no?')
    d['history'].append(y); data[k]=d
    if y in {'no','No','n','N'}:
      print('--%s.'%y)
      print('--Bye bye.')
      break
    elif y in {'yes','Yes','y','Y'}:
      print('--%s.'%y)
      print('I am pleased to serve you.')
    else:
      print('I am sorry. I can not understand what you said.')
      break     

# save data
y=input('--Do you want to save the data? [yes/no]')
while not y:
  y=input('--Yes or no?')
if y in {'no','No','n','N'}:
  print('--%s. [You say no.]'%y)
elif y in {'yes','Yes','y','Y'}:
  print('--%s. [the data is saved in file named "data".]'%y)
  save_data(data, 'data')
else:
  print('I am sorry. I can not understand what you said. data are not saved.') 

下面是hello.py的面向对象编程版本(推荐)

# hello.py 

import pickle
import os.path 

def search(x, data):
  for k, d in enumerate(data):
    if x == d['name']:
      return k, d 

class Hello:
  def __init__(self, name='', data=None):
    self.name = name
    self.data = data 

  def __getstate__(self):
    return self.data 

  def __setstate__(self, data):
    self.data = data 

  def mainloop(self): 

    while True:
      print('Welcome! [type "quit" if you want to quit.]')
      name=input('--What is your name?\n--')
      if name in {'quit','Quit','q','Q'}:
        print('[You quit]')
        break
      if not search(name, self.data):
        print('--Welcome, '+name+ '. I will remember you name.')
        d={'name':name,'age':0,'history':[]}
        self.data.append(d)
      else:
        print('--Hi, '+name+'. How I miss you.') 

      k, d=search(name, self.data)
      while d['age']==0:
        age=input('--How old are you?[I will repeat until you respond!]')
        try:
          if int(age)==0: continue
          d['age']=int(age); self.data[k]=d
        except:
          pass
      while True:
        y=input('--Chan I help you? [yes/no]')
        while not y:
          y=input('--Yes or no?')
        d['history'].append(y); self.data[k]=d
        if y in {'no','No','n','N'}:
          print('--%s.'%y)
          print('--Bye bye.')
          break
        elif y in {'yes','Yes','y','Y'}:
          print('--%s.'%y)
          print('I am pleased to serve you.')
        else:
          print('I am sorry. I can not understand what you said.')
          break 

    # save data
    y=input('--Do you want to save the data? [yes/no]')
    while not y:
      y=input('--Yes or no?')
    if y in {'no','No','n','N'}:
      print('--%s. [You say no.]'%y)
    elif y in {'yes','Yes','y','Y'}:
      print('--%s. [the data is saved in file named "data.pkl".]'%y)
      with open('data.pkl', 'wb') as fo:
        pickle.dump(self, fo)
    else:
      print('I am sorry. I can not understand what you said. data are not saved.')
    # communicating with computer 

try:
  with open('data.pkl', 'rb') as fo:
    hello=pickle.load(fo)
except:
  hello=Hello('ai',[]) 

hello.mainloop() 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • AI人工智能 Python实现人机对话

    在人工智能进展的如火如荼的今天,我们如果不尝试去接触新鲜事物,马上就要被世界淘汰啦~ 本文拟使用Python开发语言实现类似于WIndows平台的"小娜",或者是IOS下的"Siri".最终达到人机对话的效果. [实现功能] 这篇文章将要介绍的主要内容如下: 1.搭建人工智能--人机对话服务端平台 2.实现调用服务端平台进行人机对话交互 [实现思路] AIML AIML由Richard Wallace发明.他设计了一个名为 A.L.I.C.E. (Artificia

  • 人机交互程序 python实现人机对话

    自己随便写了一个人机交互的程序.不存在任何智能,只是可以识别姓名,可以记录对话内容,并保存等到下一次交互时加载. (推荐面向对象版本) # hello.py # 这是老早写的.不过今天加入了Pickle,然后润色了一下. # 可能有点无聊(不推荐使用) import pickle import os.path def search(x, data): for k, d in enumerate(data): if x == d['name']: return k, d def save_data

  • 小米5s微信跳一跳小程序python源码

    本文实例为大家分享了微信跳一跳小程序python源码,供大家参考,具体内容如下 微信跳一跳小程序小米5s源码python,搭建环境后亲测可用. # coding: utf-8 import os import sys import subprocess import shutil import time import math from PIL import Image, ImageDraw import random import json import re # === 思路 === # 核

  • POC漏洞批量验证程序Python脚本编写

    目录 编写目的 需求分析 实现过程 Main函数 获取目标 批量请求验证 加载POC 多线程类 urlParse getProxy randomHeaders 输出结果 其他 全局变量 命令行读取参数 poc详情显示 Ctrl+C结束线程 poc.json文件 运行结果 FoFa获取目标 poc验证 总结 完整代码 编写目的 批量验证poc,Python代码练习. 需求分析 1.poc尽可能简单. 2.多线程. 3.联动fofa获取目标. 4.随机请求头. 实现过程 脚本分为三个模块,获取poc

  • 我喜欢你 抖音表白程序python版

    本文实例为大家分享了python抖音表白神器,供大家参考,具体内容如下 # -*- coding: utf-8 -*- import sys from PyQt5 import QtWidgets from PyQt5.QtGui import QFont,QIcon#QtWidgets不包含QFont必须调用QtGui from PyQt5 import QtGui,QtCore import random class MessageBox(QtWidgets.QWidget):#继承自父类Q

  • 微信小程序python用户认证的实现

    这里用到django-rest-framework-jwt这个库   https://github.com/GetBlimp/django-rest-framework-jwt 按流程图来 先通过wx.login()获取code,再通过我们后台配置的接口获取openid和session_key // 登录 wx.login({ success: res => { console.log(res) // 发送 res.code 到后台换取 openId, sessionKey, unionId w

  • python实现日常记账本小程序

    python实现收支的自动计算,能够查询每笔账款的消费详情,具体内容如下 1.函数需要两个文件:一个类似钱包功能,存放钱:另一个用于记录每笔花销的用途 #!/usr/bin/env python import cPickle as p with open('wallet.data','w') as f: p.dump(10000,f) with open('record.txt','w') as f: pass 2.功能实现 #!!/usr/bin/env python #coding:utf8

  • 基于Python socket的端口扫描程序实例代码

    本文研究的主要是Python的端口扫描程序,具体实例代码如下. 先来看看第一个端口扫描程序代码,获取本机的IP和端口号: import socket def get_my_ip(): try: csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) csock.connect(('8.8.8.8', 80)) (addr, port) = csock.getsockname() csock.close() return addr,port

  • python实现聊天小程序

    本文实例为大家分享了python实现聊天小程序的具体代码,供大家参考,具体内容如下 我这里实现的是客户端与服务端进行通信的功能,比较简单,与上一篇文章的群聊不太一样. 服务端server.py #-*- coding:utf-8 -*- import socket, traceback, sys host = '' port = 51423 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_

  • 简单实现python聊天程序

    本文实例为大家分享了简单实现python聊天程序的具体代码,供大家参考,具体内容如下 客户端 #coding:utf-8 import socket, sys host = 'localhost' port = 10001 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) print 'socket创建成功' try: s.connect((host,port)) print '连接成功' except: sys.exit(1) while

随机推荐