第0关-千寻的名字
一、python的应用领域
二、人工智能范例
1.范例1
将写在纸上的文字,精准地识别出来
1 import requests 2 from aip import AipOcr 3 4 image = requests.get('https://res.pandateacher.com/python_classic.png').content 5 6 APP_ID = '16149264' 7 API_KEY = 'yxYg9r4OuAs4fYvfcl8tqCYd' 8 SECRET_KEY = 'yWg3KMds2muFsWs7MBSSFcgMQl8Wng4s' 9 client = AipOcr(APP_ID, API_KEY, SECRET_KEY) 10 res = client.basicGeneral(image) 11 if 'words_result' in res.keys(): 12 for item in res['words_result']: 13 print(item['words']) 14 15 else: 16 APP_ID = '11756541' 17 API_KEY = '2YhkLuyQGljPUYnmi1CFgxOP' 18 SECRET_KEY = '4rrHe2BF828bI8bQy6bLlx1MelXqa8Z7' 19 client = AipOcr(APP_ID, API_KEY, SECRET_KEY) 20 res = client.basicGeneral(image) 21 if 'words_result' in res.keys(): 22 for item in res['words_result']: 23 print(item['words']) 24 else: 25 print(res)
2.范例2
真正地运行一个人工智能小程序,和计算机进行“对话”。它其实就是Python码出来的Siri。
1 import urllib.parse 2 import hashlib 3 import time 4 import random 5 import string 6 import requests 7 import sys 8 import readline 9 10 def curl_md5(src): 11 m = hashlib.md5(src.encode('UTF-8')) 12 # 将得到的MD5值所有字符转换成大写 13 return m.hexdigest().upper() 14 15 16 """ 17 get_req_sign :根据 接口请求参数 和 应用密钥 计算 请求签名 18 参数说明 19 -pa:接口请求参数 20 -apk:应用密钥 21 返回数据 22 -签名结果 23 """ 24 25 26 def get_req_sign(pa, apk): 27 28 # 1.字典升序排序 29 pa_list = list(pa.items()) 30 pa_list.sort() 31 32 # 2.拼按URL键值对 33 tem_str = '' 34 for i in range(len(pa_list)): 35 if pa_list[i][1]: 36 tem_str += (pa_list[i][0] + '=' + urllib.parse.quote(pa_list[i][1]) + '&') 37 38 # 3.拼接app_key 39 tem_str += ('app_key=' + apk) 40 41 # 4.MD5运算 + 转换大写,得到请求签名 42 sign = curl_md5(tem_str) 43 return sign 44 45 46 def get_params(plus_item): 47 48 # 请求时间戳(秒级),用于防止请求重放(保证签名5分钟有效) 49 t = time.time() 50 time_stamp = str(int(t)) 51 # 请求随机字符串,用于保证签名不可预测 52 nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10)) 53 54 global se 55 56 app_id = '2127007340' 57 app_key = '9Fm2D9tkB4lEjZ89' 58 params = { 59 'app_id': app_id, 60 'time_stamp': time_stamp, 61 'nonce_str': nonce_str, 62 'question': plus_item, 63 'sign': '', 64 'session': se 65 } 66 67 params['sign'] = get_req_sign(params, app_key) 68 return params 69 70 71 def get_content(plus_item): 72 # 聊天的API地址 73 url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat" 74 # 获取请求参数 75 plus_item = plus_item.encode('UTF-8') 76 payload = get_params(plus_item) 77 r = requests.post(url, data=payload) 78 79 if r.json()["ret"] == 0: 80 print('吴小枫:' + r.json()["data"]["answer"]) 81 else: 82 print('今天我出了一点小问题~快联系助教帮忙解决一下~~') 83 sys.exit() 84 85 86 feature_text = [''' 87 大家好!我是你的聊天机器人吴小枫。 88 我有问必答,有人会问我“今天深圳天气怎么样?”,也有人问我“你喜欢我吗?” 89 快来问我问题呀,欢迎来撩! 90 >''', ''' 91 再来问我点啥吧!我把我知道的都告诉你,嘻嘻! 92 >''', ''' 93 # 我有点饿了,再和你聊完最后一句,我就要下线啦!你还有什么要问我的? 94 # >'''] 95 96 se = str(random.randint(1, 10000)) 97 98 for i in range(len(feature_text)): 99 comment = input(feature_text[i]) 100 get_content(comment) 101 time.sleep(1) 102 103 print(' 我走啦,下次见!')
三、print()函数
1.知识点总结
2.范例
1)单引号和双引号
1 # 括号内是单引号的情况。 2 print('一起玩吧') 3 4 # 括号内是双引号的情况。 5 print("一起玩吧") 6 7 # 括号内单双引号同时存在的情况。 8 print("Let's play") 9 #双引号是print结构
2)三引号
1 print('''我愿意留在汤婆婆的澡堂里工作两年, 2 第一年在锅炉房和锅炉爷爷一起烧锅炉水, 3 将在这个世界变成一头猪。 4 ''')
3)转义字符
1 print('我愿意留在汤婆婆的澡堂里工作两年, 如果我违背工作内容的话, 将在这个世界变成一头猪。')
四、变量和赋值
1.知识点总结
1)变量
变量就像是一个带标签的盒子,需要你把数据放进去。(变量名在赋值时,指向这个数据的储存地址)
2)变量名
当多次赋值之后,变量名会指向新的空间(新的空间储存的是别的数据,所以该变量名代表的数据发生变化)
3)变量的命名规范
4)等于与赋值的区别
2.范例
1)范例1
1 name='千寻' 2 name='小千' 3 print(name)
五、本章知识点
1.知识点
2.范例
1 import random 2 import time 3 4 ###提示语部分 5 print('你好,我是机器人小埋,我们来玩个猜年龄的小游戏吧~(◆◡◆)') 6 time.sleep(2) 7 8 print(''' 9 ============================= 10 干物妹!うまるちゃんの年齢 11 ============================= 12 ''') 13 time.sleep(1) 14 15 16 print('小埋的真实年龄在1到10之间哦~') 17 time.sleep(1) 18 19 20 print('不过,你只有5次机会哦~') 21 time.sleep(1) 22 23 24 print('下面,请输入小埋的年龄吧:') 25 26 27 #从0至10产生一个随机整数,并赋值给变量age 28 age = random.randint(1,10) 29 30 31 #设置次数 32 for guess in range(1,6): 33 34 #输入玩家猜测的年龄 35 choice=int(input()) 36 37 #判读玩家输入的年龄是否等于正确的年龄 38 if choice<age: 39 print('小埋的提示:你猜小了(;´д`)ゞ。。。。') 40 41 elif choice>age: 42 print('小埋的提示:乃猜大了惹(>﹏<)~~') 43 44 else: 45 print('猜了'+str(guess)+'次,你就猜对惹~hiu(^_^A;)~~~') 46 break 47 48 #判断猜测次数 49 if choice == age: 50 print('搜噶~那么小埋下线了~拜拜~( ̄︶ ̄)↗') 51 52 else: 53 print('哎呀~你还是木有猜对啊~但是你只有5次机会诶~怎么办啊~') 54 print('那好吧~心软的小埋只好告诉你,我才'+str(age)+'岁哦~(*/ω\*)')