第一章 介绍与循环

第一章 介绍与循环

第一课 开课介绍
	pyhton擅长的领域:
		web开发:
			Django\pyramid\Tornado\Bottle\Flask\WebPy
		网络编程(爬虫):
			Scrapy\Twisted\Requests\Paramiko
		科学运算:
			Pandas(金融领域)\SciPy\Ipython
		DUI图形开发:
			wxPython\PyQT\Kivy
		运维自动化:
			OpenStack\腾讯蓝鲸
	自动化运维必须会开发吗?
		运维要考虑的问题:
			1.如何高效的适应业务的频繁更新、变更、上线、扩展?
			2.如何在成本最低的前提下,实现业务并发运算能力的可伸缩式扩展?
			3.如何实现运维人员从被动处理故障到故障的预防和故障高度自愈的转换?
			4.如何通过不断优化运维流程、自动化工具来降低运维成本、人工参与度,最终实现无人运维?
		自动化运维会开发可以干什么?
			1.帮助公司开发各种自动化工具,定制开发各种开源软件
			2.帮助评估和优化业务技术架构
			3.开发公司内部的办公系统,CRM(财务管理系统),网站等
			4.做个全栈工程师,全栈就是指什么都能做的样子
	课程计划:
		1.语言基础:
			数据类型
			流程控制
			常用模块
			函数、迭代器、装饰器
			递归、迭代、反射
			面向对象编程
			购物车程序
			ATM信用卡程序开发
			计算器程序开发
			模拟人生游戏开发
		2.网络编程:
			Socket c/s编程 Twisted异步网络框架、网络爬虫开发
			多线程、多进程、协程gevent、select\poll\epoll
			生产者消费者模型
			审计堡垒机系统开发
			FTP服务器开发
			批量命令、文件分布工具
			RabbitMQ消息队列、SqlAlchemy ORM
			类SaltStack配置管理工具开发
			Reids\MemCache\MongoDB 缓存数据库
		3.Web基础开发:
			Html/Css基础
			Dom编程
			原生JS学习
			jQuery/EasyUi/AngulaJS
			Ajax异步加载
			Highchart画图
			Bootstrap
		4.算法&设计模式
			冒泡、二叉树、哈希、拆半 等常见的算法学习
			工厂模式、单例模式、享元模式、代理模式等常用的设计模式学习
		5.PY Web框架:
			MVC架构讲解
			自行开发一个Web框架
			Django\pyramid\Tornado\Bottle\Flask\WebPy框架学习
			Session\中间件\ORM\Cookie\CSRF\FORM...
			Restful API框架
			权限管理后台开发
			开发BBS论坛
			开发WEB聊天室
		6.项目实战篇:
			购物商城开发
			主机管理+任务编排+运维审计堡垒机开发
			分布式类Nagios/Zabbix监控产品开发
			CMDB资产管理开发
			基于用户视角的网站访问质量检测分析平台开发
			Docker自动化管理平台开发
			OpenStack二次开发



第二课 python的发展介绍
	编译型与解释型
		编译型:
			一次将所有的代码转成机器语言,然后写成可执行文件:C/C++
		解释型:
			在程序运行的前一刻,还只有源程序而没有可执行程序,
			而程序每执行源程序的某一条指令,则会有一个称之为
			解释程序的外壳程序将源代码转换为二进制代码以供执行,
			总言之,就是不断地解释、执行、解释、执行……所以
			解释型程序是离不开解释程序的。python java
		编译型语言因为系统兼容性问题,可移植性差,但是运行速度比解释型语言快。
		Java虽然属于解释型语言,但是因为预编译技术,大多数情况速度要快于pyhton。
	动态语言和静态语言
		动态语言:
			在运行期间才去做数据类型检查的语言,声明变量时不用指定类型。python JavaScript
		静态语言:
			数据类型在编译期间检查,写程序时要声明所有变量的数据类型。C# java
	强类型定义语言和弱类型定义语言
		强类型定义语言:
			一旦变量被指定了数据类型,如不经过强制转换,它将永远是这个数据类型。
			是类型安全的语言。pyhton java
		弱类型定义语言:
			数据类型可以忽略的语言,一个变量可以赋不同数据类型的值。VBScript
	总结:
		python是一门动态解释型强类型定义语言。
		优点:
			1.简单易懂
			2.强大的第三方库
			3.高级语言(写程序时无需考虑管理程序所使用的内存等底层细节)
			4.可移植性强
			5.可扩展性强
			6.可嵌入性
		缺点:
			1.速度慢(开发搜索引擎建议用C去实现)
			2.代码不能加密
			3.线程不能利用多CPU问题(最被诟病的缺点,因为GIL即全局解释器锁,禁止了多线程的存在)


第三课 变量\字符编码
	开发工具:
		使用pycharm:新建pyhton项目===》新建目录===》新建py文件
	变量:
		定义一个变量:
			name='abc'
			print('my name is ',name)
			输出:
				my name is abc
		变量命名规则:
			1.变量名只能是字母、数字和下划线的组合
			2.第一个字符不能是数字
			3.关键字不能声明为变量(and,as,class,break......)
			4.(约定俗成的规则)变量名要有含义
			5.(约定俗成的规则)变量名不能用中文
			6.(约定俗成的规则)变量名全都大写代表常量
	字符编码:

		128	64	32	16	8	4	2	1 十进制
		1	1	1	1	1	1	1	1 二进制

		ASCII码:
			用8位(一个字节)表达一个字符,所以只能表达255个字符。
		GB2312:
			1980年,为了处理汉字设计了用于简体中文的GB2312和繁体中文的big5
			GB2312收录了7445个字符
		GBK:
			1995年,GB2312扩展为GBK1.0收录了21886个字符
		GB18030:
			2000年,GB18030收录了27484个汉字,成为国家正式标准
			现在PC平台必须支持GB18030,对嵌入式产品暂时不要求
			所以手机、MP3一般只支持GB2312。

		Unicode(统一码、万国码、单一码):
			一个字符或符号,最少由16位(两个字节)来表示
		UTF-8:
			Unicode的压缩版,ASCII中包含的内容用一个字节保存。
			en字符用1个字节 zh字符用三个字节



第四课 用户交互程序

	注释:
		单行注释:#
		多行注释:'''code''' 或 """code"""
		pycharm注释快捷键:Ctrl+/
	格式化输出:
		代码:
			name=input('name:')
			age=input('age:')
			job=input('job:')
			salary=input(&#39;salary:&#39;)</p><p>				info=&#39;&#39;&#39;
			--------info of %s--------
			Name:%s
			Age:%s
			Job:%s
			Salary:%s
			&#39;&#39;&#39;%(name,name,age,job,salary)
			print(info)
		运行结果:
			name:abc
			age:18
			job:it
			salary:1000</p><p>				--------info of abc--------
			Name:abc
			Age:18
			Job:it
			Salary:1000
	流程控制:
		if语句:

			if 条件:
				代码块
			elif 条件:
				代码块
			else:
				代码块

		while循环语句:

			while 条件:
				代码块
				break

		for循环遍历语句:

			for i in range(10):
				代码块

		break:
			跳出循环体
		continue:
			跳过本次循环,执行下一次循环</p><p>作业:
编写登录接口:
	1.输入用户名密码
	2.认证后显示欢迎信息
	3.输错三次后锁定