Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
Python Workshop
人生苦短,我用Python!
程序性思维源于程序性知识.
语法和内部控制单元的语义.
机器语言、汇编.
编译型语言:
解释型语言:
当然也有很多的缺陷!!!
作为主语言实现:
作为嵌入式脚本实现:
Python语言易学、易读
>>>print("Hello World!") >Hello World!
所有结构都是对象!
存在两种对象形式:
>>>type(3.0) >>>type(3) >>>type(True)
>>>type("salam") >>>type([1, 2, 3])
类型转换:
>>>float(3)
运算符重载:
>>>print(3 * "a") >>>print("a" + "bc")
数据切片:
>>>'salam'[1:3] >>>'abc'[-1] >>>'abc'[:]
>>>k = 1.0 + (3.0**2.0) + 4.0 * 12.0 >>>m = 3 % 2 + 3 / 2
>>>k = (2 == 5) >>>m = (3 >= 7)
>>>k = True and not False >>>m = False or True
条件语句是用来判断给定的条件是否满足(表达式值是否为0),并根据判断的结果(真或假)决定执行的语句
if x%2 == 0: if x%3 == 0: print('被2和3整除') else: print('只被2整除') elif x%3 == 0: print('只被3整除')
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。
x = 3 ans = 0 itersLeft = x while (itersLeft != 0): ans = ans + x itersLeft = itersLeft – 1 print(str(x) + '*' + str(x) + ' = ' + str(ans))
For循环定义如下:
forin :
A sequence of Intergers for iteration can be generated by:
range(n) = [0, 1, 2, 3, …, n-1] range(m,n) = [m, m+1, …, n-1] xrange(n)
函数实现抽象方法
def( ):
一个简单的例子:
def max(x, y): if x > y: return x else: return y
可以这样调用它:
>>>z = max(3, 4)
所有的方法和脚本都可以封装成modules. 可被独立导入引用.
pi = 3.14159 def area(radius): return pi*(radius**2) def circumference(radius): return 2*pi*radius
假设这个文件定义为circle.py, 可以用一下的方式引用它:
import cicle as crl #OR from circle import area #OR from circle import *
程序通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
def recurMul(a, b): if b == 1: return a else: return a + recurMul(a, b-1)
递归需小心使用!!!
程序碰到一个异常情况怎么办?
怎么办?
try: f = open(‘grades.txt’) # … code to read and process grades except: raise Exception('Can’t open grades file')
通常用法:
def divide(x, y): try: result = x / y except ZeroDivisionError, e: print "division by zero! " + str(e) else: print "result is", result finally: print "executing finally clause"
Pygame是跨平台Python模块,专为电子游戏设计,包含图像、声音、按键控制等封装。
建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.
安装:pip install pygame
控制飞机飞行:
key_pressed = pygame.key.get_pressed() # 获得用户所有的键盘输入序列 if key_pressed[K_w] or key_pressed[K_UP]: # 如果用户通过键盘发出“向上”的指令 me.move_up()
飞机动态效果:
if not delay % 3: witch_image = not switch_image if switch_image: screen.blit(me.image1, me.rect) # 绘制我方飞机的两种不同的形式 else: screen.blit(me.image2, me.rect)
文本挖掘步骤.
舆情分析!
Kivy!!
需求:开发一个快递收货二维码扫描软件.
二维码识别,使用 zbar
from PIL import Image import zbarlight file_path = './tests/fixtures/one_qr_code_and_one_ean.png' with open(file_path, 'rb') as image_file: image = Image.open(image_file) image.load() codes = zbarlight.scan_codes('qrcode', image) print('QR codes: %s' % codes) /pre>
需求:开发一个网上生鲜超市,可以完成加购物车,收藏,下单,结算等电商相关功能.
Vue + Django Rest Framework 前后端分离技术 Sentry 错误日志的监控和告警 第三方登录和支付宝支付的集成
vue前端项目 django rest framework 实现API xadmin后台管理系统 富文本DjangoUeditor
示例:股价量化分析
基础库:
Numpy、Pandas(dataframes)、Matplotlib、SciPy
机器学习框架:
Pytorch、Orange3、Caffe、scikit-learn、TensorFlow
机器学习算法:
基础算法:K-均值聚类、决策树、线性回归、logistic 回归 高阶算法: 支持向量机、随机森林、降维算法、神经网络
基于Deep Q Learning的FlappyBird
Initialize replay memory D to size N Initialize action-value function Q with random weights for episode = 1, M do Initialize state s_1 for t = 1, T do With probability ϵ select random action a_t otherwise select a_t=max_a Q($s_t$,a; $θ_i$) Execute action a_t in emulator and observe r_t and s_(t+1) Store transition (s_t,a_t,r_t,s_(t+1)) in D Sample a minibatch of transitions (s_j,a_j,r_j,s_(j+1)) from D Set y_j:= r_j for terminal s_(j+1) r_j+γ*max_(a^' ) Q(s_(j+1),a'; θ_i) for non-terminal s_(j+1) Perform a gradient step on (y_j-Q(s_j,a_j; θ_i))^2 with respect to θ end for end for
STEAM教育是集科学、科技、工程、艺术、数学多学科的综合教育理念.
国外少儿编程起步早于国内,目前发展的已经较为成熟。
2016-2018年少儿编程宏观政策环境
少儿编程行业理念足够先进,源于对孩子逻辑思维模式,解决复杂问题的能力提升。
少儿编程授课模式,教学内容(图形化编程)均大同小异。行业模式各有不同。
当前主要是兴趣+效果复合导向,需国家政策方形指引和售后完善。
程序性知识!
Thank you!
Python Workshop By Shayan Fahimi