计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果
上面提及的能够被计算机所能表达方式即变成语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人力编程的目的就是命令奴隶去工作。
编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。
强调:程序员在未运行前跟普通文件无异,只有程序在运行时,文件所写的字符才有特定的语法意义
机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件;
汇编语言:站在计算机(奴隶)的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件;
高级语言:站在(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操作。
编译型语言:
使用专门的编译器,针对特定的平台,将高级语言码代码一次型的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。 特点: 在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。 总结: 1)一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高; 2)与特定平台相关,一般无法移植到其他平台; 2)现有的C、C++、Objective等都属于编译型语言。
解释型语言:
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。 特点: 解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。 总结: 1)解释型语言每次运行都需要将源代码解释成机器码并执行,效率较低; 2)只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植; 3)Python、Ruby等属于解释型语言。
机器语言:
优点是最底层,执行速度最快
缺点是最复杂,开发效率最低
汇编语言:
优点是比较底层,执行速度最快
缺点是复杂,开发效率最低
高级语言:
编译型语言执行速度快,不依赖语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
PS:速度不是关键(瓶颈理论),开发效率高才是王道
Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年圣诞节期间,Guido开始鞋能够解释Python语言语法的解释器,Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和Shell之间,功能全面,易学易用,可拓展的语言。
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 2.7 - July 3, 2010 In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible Python 3.0 - December 3, 2008 (这里要解释清楚 为什么08年就出3.0,2010年反而又推出了2.7?是因为3.0不向下兼容2.0,导致大家都拒绝升级3.0,无奈官方只能推出2.7过渡版本) Python 3.1 - June 27, 2009 Python 3.2 - February 20, 2011 Python 3.3 - September 29, 2012 Python 3.4 - March 16, 2014 Python 3.5 - September 13, 2015 Python 3.6 - 2016-12-23 发布python3.6.0版
我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢? 答案是好几种语言? what? 因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下: CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。 当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。 IPython IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。 CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。 PyPy PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。 绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。 Jython Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。 IronPython IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
变量即变化的量,核心“变”与“量”二字,变即变化,量即衡量状态。
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要由一种机制能够反映或者说是保存下来程序执行是状态的变化。
变量名只能是字母、数字或下环线的任意组合 变量名的第一个字符不能是数字 以下关键字不能声明为变量名['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']
驼峰体 AgeOfOldboy = 20 下划线(推荐使用) age_of_oldboy = 20
1、变量名为中文、拼音 2、变量名过长 3、变量名词不达意
1、等号比较的是value, 2、is比较的是id 强调: 1、id相同,意味着type和value必定相同 2、value相同type肯定相同,但id可能不同,如下: >>> a="help:20" >>> b="help:20" >>> id(a) 4330224472 >>> id(b) 4330224528 >>> a == b True >>> a is b False >>>
#!/usr/bin/env python # -*- coding: utf-8 -*
n1 = 123456 n2 = n1 >>> n1 = 123456 >>> n2 = n1 >>> id(n1) 4320493488 >>> id(n2) 4320493488 >>> type(n1) <class 'int'> >>> type(n2) <class 'int'>
链式赋值
x=1 y=x y=x=a=1 print(id(y),id(c))
交叉赋值
m=1 n=2 m,n=n,m print(m,n)
#方法一 >>> num=[1,2,3,4,5] >>> num1=num[0] >>> num2=num[1] >>> num3=num[2] >>> num4=num[3] >>> num5=num[4] >>> print(num1,num2,num3,num4,num5) 1 2 3 4 5 #方法二 #左边的变量名要与列表中的元素一一对应 >>> userid=[11,12,13,14,15] >>> user1,user2,user3,user4,user5=userid >>> print(user1,user2,user3,user4,user5) 11 12 13 14 15
常量即指不变的量
input:用户输入任何值,都存成字符串类型
input:必须输入明确的数据类型,输入什么就存成什么类型
raw_input:等于Python3的input
单行注释用# 多行注释用''' '''或""" """
用于标识:年龄,等级身份证号,QQ号,个数 在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647 在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~
用于标识:工资,身高,体重
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
在Python中,加了引号的字符就是字符串类型,Python并没有字符类型 定义:name='user' #name=str('user')
算术运算
以下假设变量: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 == b)返回False |
!= |
不等于——比较两个对象是否不相等 |
(a != b)返回true |
<> |
不等于——比较两个对象是否不相等 |
(a <> b)返回true。这个运算符类似!=。 |
> |
大于——返回x是否大于y |
(a > b) 返回False |
< |
小于——返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 |
(a |
>= |
大于等于——返回x是否大于等于y。 |
(a >= b)返回False |
<= |
小于等于——返回x是否小于等于y。 |
(a <= b)返回true |
赋值运算
以下假设变量: a = 10,b=20
运算符 |
描述 |
实例 |
= |
简单的赋值运算符 |
c = a +b 将a +b 的运算结果赋值为c |
+= |
加法赋值运算符 |
c += a 等效于c = c-a |
-= |
减法赋值运算符 |
c -= a 等效于c = c-a |
*= |
乘法赋值运算符 |
c *= a 等效于c = c*a |
/= |
取模赋值运算符 |
c /=a 等效于c = c/a |
%= |
幂赋值运算符 |
c %= a 等效于c = c %a |
**= |
幂赋值运算符 |
c**=a 等效于c = c**a |
//= |
取整除赋值运算符 |
c //= a等效于c = c // a |
逻辑运算符
运算符 |
描述 |
and |
布尔“与”——如果x为False,x and y 返回False,否则它返回y的计算值。 |
or |
布尔“或”——如果x是True,它返回True,否则它返回y的计算值。 |
not |
布尔“非”——如果x为True,返回False。如果x为False,它返回True。 |
%s = string 字符串 %d = digit 整型 %f = float 小数
break用于完全结束一个循环,跳出循环体执行后面的语句
#实现用户名和密码,当用户名为seven或alex且密码为123时,显示登录成功,否则登录失败,失败时允许重复输入三次
count = 0
while count <3:
inp_username=input("Please enter your login username:")
inp_password=input("Please enter your login password:")
if inp_username == "seven" or inp_username == "alex" and inp_password == "123":
print("Login success!")
break
else:
print("Login failure!")
count +=1
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
使用while循环实现输出1,2,3,4,5,7,8,9,11,12 count = 1 while count <13: if count == 6 or count == 10: count +=1 continue else: print(count) count +=1
单分支: if 条件: 条件为真(True)执行的操作 else: 条件为假(False)执行的操作 多分枝: if 条件: 满足条件执行代码 elif 条件: 上面的条件不满足就走这个 elif 条件: 上面的条件不满足就走这个 elif 条件: 上面的条件不满足就走这个 else 条件: 上面所有的条件不满足就走这段
示例:
score = int(input(">>:")) if score > 100: print("成绩最高分数为100分") elif score >= 90: print("A") elif score >= 80: print("B") elif score >= 70: print("C") elif score >= 60: print("D") elif score >= 0: print("E") else: print("成绩不能是负数")
Python的while循环语法一:
while 条件:
条件为真(True)执行的操作
示例:
#写个让程序从0打印到100的程序,每循环一次,+1+ count = 0 while count <= 100: #只要count<=100就不断执行下面的代码 print("loop" ,count) count += 1 #每次执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
Python的while循环语法二:
while 条件:
条件为真(True)执行的操作
else:
上面条件不满足就走这段
示例:
count=1 while count <6: if count == 4: break print(count) count+=1 # break else: print('else的代码块只有在while循环没有被break打断的情况下才执行(最后执行)')
#for 只有字符串,列表,字典 >>> for item in range(10): ... print(item) ... 0 1 2 3 4 5 6 7 8 9