21天Python入门必备第一章
课程介绍
Python与其他语言的区别
java 再90年代 跨平台语言,操作系统(windows ,unix 、linux)
- C\C++:学习成本高,学习周期长,偏系统底层,在开发硬件驱动、散入式、游戏引擎开发等领城有广的应用
- JAVA:日前使用最广这的编程语言,第一个跨平台运行的语言,在大型ERP软件开发\安卓APP开发\网站开发领或使用广之
- PHP:使用最广的WEB开发语言,非常适合中小型网站开发,学习成本较低,开发效辛高。
- PYTHON:使用领或几乎和JAVA一样广这,但开发效辛要高于JAVA,且学习成本较低,在料学运算\教据分析\网站开发\爬虫开发\云计算八自动化运维\自动化测试等领城优势明显、
python 的生态圈
- WB开发——最火的Python web框架Django,支椅异步高并发的Tormado框架,短小精悍的flask,botle,Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)
- 人工智能——谁会成为Al和大散据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,
Matlab、Scala、R、Java和Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天Facebook 开源了PyTorch之后,Python作为Al时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅
- 云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
- 金融量化分析、自动化交易——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Pytho,到目前,Pythom是金融分析、量化交易领城里用的最多的语言
- 爬虫——爬领域,Python几乎是霸主地位,Scrapy\Request\Beautifusoap\urib等,想爬啥就爬啥
- 自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答亲,它的名字叫Python
- 料学运算一一你知道么,9升年开始,NASA就在大量使用Python在进行各种夏杂的科学运算,随着NumPy,Scipy,Matplotlib,Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和料学计算领或最流行的商业软件Maflab相比,Pythow是一门通用的程房设计语言,比Malab所采用的脚本语言的应用范围更广之
- 游戏开发——在网络游戏开发中Pythom也有很多应用,Python 非常适合编写1万行以上的项目,而且能影很好地把网游项目的规模控制在10万行代码以内。另外据我所知,知名的游戏<文明)就是用Python写的
就业前景
"Life is short,you need Python!"
-Bruce Eckel
C++Comitee member
编程语言的介绍
高级语言
高级语言编译类
高级语言解释型
小结
机器语言
优点是最底层,速度最快,缺点是最复杂,开发效率最低
汇编语言
优点是比较底层,速度最快,缺点是复杂,开发效和最低
高级语言
偏译型语言执行速度快,不依奶语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
python介绍和发展史
吉多·范罗苏姆(Guido van Rossum)
1989年的圣诞节期间,Guido开始写Python语言的编译器。Python这个名字,
来自Guido所挚爱的电视剧Monty Python's Flying Circus。他希望这个新的
叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,
|易学易用,可拓展的语言。
2005年加入谷歌至2012年,2013年加入Dropbox直到现在
依然掌握着Python发展的核心方向,被称为仁慈的独裁者
python 发展史
*1989年,Guido开始写Python语言的编译器。
*1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,
函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
*Granddaddy of Python web frameworks,Zope 1 was released in 1999
*Python 1.0-January 1994增加了 lambda,map,filter and reduce.
*Python 2.0-October 16,2000,加入了内存回收机制,构成了现在Python语言框架的基础
*Python 2.4-November 30,2004,同年目前最流行的WEB框架Django诞生
*Python 2.5-September 19,2006
*Python 2.6-October 1,2008+
*Python 3.0-December 3,2008
*Python 2.7-July 3,2010
*Python 3.1-June 27,2009
*Python 3.2-February 20,2011
*Python 3.3-September 29,2012
*Python 3.4-March 16,2014
*In November 2014,it was announced that Python 2.7 would be supported until 2020,and reaffirmed that there would beno 2.8 release as users were expected to move to Python 3.4+as soon as possible
*Python 3.5-September 13,2015
*Python3.6-2016-12-23发布python3.6.0版
python解释器类型
CPython
当我们从Python官方网站下载并安装好Python2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命
令行下运行python就是启动CPython解释器。
CPython是使用最广且被的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多
国产浏览器虽然外观不同,但内核其实都是调用了E。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
lronPython
IronPython和Jython类似,只不过ronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码
Python安装和Hello World
用notepad++创建一个文件,输入以下代码
prigt("Hello World!")
print(“Python好简单呀,我要学好挣大钱!")
保存为HelloWorld.py,注意.py后缀名的作用
进入cmd命令行,执行python HelloWorld.py,看结果
*注意文件名前面加python的原因是要把代码交给python解释器去解释执行
变量与变量的作用
计算机的主要作用之一是进行计算,用Python进行数值运算非常容易,跟我们平常用计算器一样简单
程序实现
你发现没有?你在最后在算总消费的时候直接用的是之前已经算好的中间结果,为什么这么做?都知道这样是为了避免重新再算一遍所有的数据。那在程序中呢?
>>>print('eat',10+15+7+4+7+3)
eat 46
>>>print('cloth',20)
cloth 20
>>>print('traffic',6+6+6+6+6)
traffic 30
>>>print(精神”,300+300+400+200)
精神1200
>>>
>>>
>>>print('总消费,46+20+30+1200)
总消费1296*
变量定义规范
声明变量
name="Alex Li"
变量定义规则
·变量名只能是字母、数字或下划线的任意组合
·变量名的第一个字符不能是数字
·以下关键字不能声明为变量名[and,as','assert','break,'class,'continue','def,'del",'elif",'else','except,'exec',‘finally,'for','from','global',if",'import','in',is,lambda,'not','or','pass,'print,'raise','return,'try,'while','with','yield]
驼峰体
Age0f0ldboy=56
NumberOfStudents=80
下划线
age_,of_oldboy=56
number_of_students=80
官方推荐用哪种?
定义变量的Low方式
- 变量名为中文、拼音
- 变量名过长
- 变量名词不达意
常量
常量即指不变的量,如pai 3.141592653..,或在程序运行过程中不会改变的量
在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
AGE_OF_OLDBOY=56
在c语言中有专门的常量定义语法,const int count=60;一旦定义为常量,更改即会报错
用户交互和注释
读取用户输入
name=input("What is your name?")
执行脚本就会发现,程序会等待你输入姓名后再往下继续走。
print("Hello"+name)
可以让用户输入多个信息,如下
name=input("What is your name?")
age=input("How old are you?")
hometown=input("Where is your hometown?")
print("Hello ",name,"your are ",age,"years old,you came from",hometown)
数字类型-数字
什么是数据类型?
我们人类可以很容易的分清数字与字符的区别,但是计
算机并不能呀,计算机虽然很强大,但从某种角度上看
又很傻,除非你明确的告诉它,1是数字,“汉”是文字,
否则它是分不清1和“汉’的区别的,因此,在每个编程语
言里都会有一个叫数据类型的东东,其实就是对常用的
各种数据类型进行了明确的划分,你想让计算机进行数
值运算,你就传数字给它,你想让他处理文字,就传字
符串类型给他。Python中常用的数据类型有哪些呢
int(整型)
·在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-21474836482147483642**63-1,即-9223372036854775808
·在64位系统上,整数的位数为64位,取值范围为-2**63
~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由
于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长
整数数据后面不加字母L也不会导致严重后果了。
o注意在Python3里不再有long类型了,全都是int
o除了int和long之外,其实还有float浮点型,复数型,但今天先不讲啦
数据类型-字符串
在Python中,加了引号的字符都被认为是字符串!
>>>name="Alex Li" #双引号
>>>age="22" #只要加引号就是字符串
>>>age2=22 #int
>>>msg="My name is Alex,I am 22 years old!' #我擦,3个引号也可以
>>>hometown='ShanDong' #单引号也可以
那单引号、双引号、多引号有什么区别呢?
单双引号木有任何区别,只有下面这种情况你需要考虑单双的配合
msg="My name is Alex,I'm 22 years old!"
多引号什么作用呢?
作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)
字符串拼接
数字可以进行加减乘除等运算,字符串呢?让我大声告诉你
也能!what?是的,但只能进行“相加“和“相乘“运算。
>>>name
Alex Li'
>>>age
'22'
>>>name+age #相加其实就是简单拼接
‘ALex Li22’
>>>
>>>name * 10 #相乘其实就是复制自己多少次,再拼接在一起
‘Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'
注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接单双引号
>>>type(name),type(age2)
(<type'str'>,<type‘int'>)
>>>
>>>name
‘Alex Li'
>>>age2
22
>>>name+age2
Traceback(most recent call last):
File"
TypeError:cannot concatenate 'str'and ‘int'objects #错误提示数字和字符不能拼接
数据类型-布尔类型
布尔类型很简单,就两个值,一个True(真),一个False(假),主要用于逻辑判断!
你是不是不明白?
>>>a=3
>>>b=5
>>>
>>>a>b#不成立就是False,即假False
>>>
>>>a<b#成立就是True,即真 True
计算机为什么要描述这种条件呢?
因为接下来就可以根据条件结果来干不同的事情了
if a > b
print(a is bigger than b)
else
print(a is smaller than b)
格式化输出
如何实现这个小程序
name=input("Name:")
age=input("Age:")
job=input("Job:")
hometown=input("Hometown:")
#print("------—-info of",name,----')
#print("Name:",name)
#print("Age:",age)
#print("Job:",job)
#print("-------end----")
info = """
------------ info of %s-------------
Name: %s
Age : %s
Job : %s
Hometown: %s
------------ end ------------------
""" % (name,name,age,job,hometown)
#s = string
#d = digit
#f = float
print(info)
运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,
今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算
算数运算
以下假设变量:a=10,b=20
运算符
描述
实例
加-两个对象相加
a+b输出结果30
-
减-得到负数或是一个数减去另一个数
a-b输出结果-10
*
乘-两个数相乘或是返回一个被重复若干次的字符串
a*b输出结果200
/
除-x除以y
b/a输出结果2
%
取模-返回除法的余数
b%a输出结果0
**
幂-返回x的y次幂
a**b为10的20次方,输出结果100000000000000000000
//
取整除-返回商的整数部分
9//2输出结果4,9.0/2.0输出结果4.0
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
逻辑运算
流程控制-单双分支
单分支
if 条件:
满足条件后要执行的代码
练习:
·输入姓名、性别,判断如果是女生,打印,我喜欢女生!
·输入姓名、性别,判断如果是女生且年龄小于28岁,打印,我喜欢女生!
双分支
if条件:
满足条件执行代码
else:
if条件不满足就走这段
Age0f0ldboy=48
if Age0f0ldboy>50:
print("Too old,time to retire..")
else:
print(“还能折腾几年!")
练习:
·输入姓名、性别,判断如果是女生,打印我喜欢女生,否则,打印一起来搞基!
·输入姓名、性别、年龄,判断如果是女生且年龄小于28岁,打印我喜欢女生,否则,打印姐弟恋也很好奥!
·输入姓名、性别、年龄,判断如果是女生且年龄小于28岁,打印我喜欢女生,否则,打印姐弟恋也很好奥!如果是男生,打印一起来搞基!
name=input("name:")
sex=input("sex:")
age=int(input("Age:"))
#if sex=='fl:
##1如果是女生
#1.1如果年龄小于28
#1.1.1打印喜欢女生
#1.2打印姐弟恋很好
#2.如果是男生,打印搞基
if sex=="f":
if age<28:
print("I love girls")
else:
print(“姐弟恋也很好”)
else:
print(“一起来搞基")
print("----here ....")
多分支
if 条件:
满足条件执行代码
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
else:
上面所有的条件不满足就走这段
练习:
写个猜年龄的游戏吧
#coding:utf-8
age=26 user_guess=int(input("your guess:"))
if user_guess == age : print("恭喜你答对了,可以抱得傻姑娘回家!") elif user_guess < age: print("try bigger") else : print("try smaller")
age_of_oldboy=48 guess=int(input("s>:") if guess>age_of_oldboy: print("猜的太大了,往小里试试…") elif guess<age_of_oldboy: print("猜的太小了,往大里试试..") else: print("恭喜你,猜对了.")
再来个匹配成绩的小程序吧,成绩有ABCDE5个等级,与分数的对应关系如下
A 90-100
B 80-89
C 60-79
D 40-59
E 0-39
要求用户输入O-100的数字后,你能正确打印他的对应成绩
if score>100:
print("成绩最多只能到100")
elif score>=90:
print("A")
elif score>=80:
print("B")
elif score >=60:
print("C")
elif score >=40:
print("D")
elif score >= 0:
print("E")
else:
print("成绩不能是负数")
While循环
猜年龄游戏升级版,允许用户最多猜3次!
即使是小白的你,也觉得的太low了是不是,以后要修改功能还得修改3次。
因此记住,写重复的代码是程序员最不耻的行为。
那么如何做到不用写重复代码又能让程序重复一段代码多次呢?循环语句就派上用场啦
while循环
语法
while条件:
执行代码...
写个让程序从0打印到100的程序,每循环一次,+1+
count=0
while count <= 100 : #只要count<=100就不断执行下面的代码
print("loop",count)
count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
print('------loop is ended-----')
练习:
如果我想实现打印1到100的偶数怎么办呢?
循环打印1-100,第50次不打印值,第60-80次,打印对应值的平方。
#打印偶数
count=0
while count <= 100:
if count % 2 == 0: #偶数
print("Loop",count)
count+=1
print(----loop is ended----')
-dead loop
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
while 是只要后边条件成立(也就是条件结果为真)就一直执行,怎么让条件一直成立呢?```
count = 0
while True: #True本身就是真呀
print(“你是风儿我是沙,缠缠绵绵到天涯...",count)
count += 1
-continue vs break
循环终止语句
如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break或continue 语句
·break用于完全结束一个循环,跳出循环体执行循环后面的语句
·continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
count = 0
while count <= 100 : #只要count<=100就不断执行下面的代码
print("loop",count)
if count == 5:
break
count += 1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
print("----out of while loop----—-")
输出
1oop 0
1oop 1
1oop 2
1oop 3
1oop 4
1oop 5
----out of while loop-----
count=0
while count<=100:
count+=1
if count>5 and count<95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop
continue
print("loop",count)
print("-----out of while loop---—-")
输出
1oop 1
1oop 2
1oop 3
1oop 4
1oop 5
1oop 95
1oop 96
1oop 97
1oop 98
1oop 99
1oop 100
1oop 101
---out of while loop------
练习:
·优化猜年龄游戏,允许用户最多猜3次,中间猜对了,直接跳出循环
·优化猜年龄游戏,允许用户最多猜3次,猜了3次后,再问是否还想玩,如果
用户选y,刚再允许猜3次,以次往复…
猜年龄练习解答
-----------------------------------------------------------------------------
While else语句
与其它语言else一般只与if搭配不同,在Python中还有个while..else 语句
while 后面的else作用是指,当while循环正常执行完,中间没有被break中止的话,就会执行else后面的语句
开发工具Pycharm 使用介绍
开发工具IDE
代码自动补全
语法错误提醒
代码调试
性能测试
web开发框架支持
git/svn支持