吃水不忘挖井人
首先对河南师范大学的各位老师们说声谢谢。他们是:
张磊老师、张倩倩老师、刘金金老师、郭凌云老师、李晓艳老师、李志先老师、陶华亭老师、周雪燕老师、王爱菊老师、陈劲松老师、黄晓巧老师、夏辉丽老师
2.1 程序的格式框架
2.1.1 缩进
Python语言采用严格的“缩进”来表明程序的格式框架。
缩进指每一行代码开始前的空白区域,用来表示代码之间的包含和层次关系。
缩进是Python语言中表明程序框架的唯一手段。
1个缩进 = 4个空格
当表达分支、循环、函数、类等程序含义时,在 if、while、for、def、class等保留字所在完整语句后通过英文冒号(:)结尾并在之后进行缩进, 表明后续代码与紧邻无缩进语句的所属关系。
代码编写中缩进可以用Tab键实现,也可以用4个 空格实现,但两者不可混用。
建议使用4个空格缩 进方式书写代码。
2.1.2 程序的格式框架
单层缩进
多层缩进
2.1.3 注释
注释是代码中的辅助性文字,会被编译或解释器略去,不被计算机执行,
一般用于程序员对代码的说明。注释的两种方法:
单行注释以#开头 ,可以独占一行也可以从行的中间开始。
多行注释以 ’’’开头和结尾;也可以在每行开始都使用#
Python程序中的非注释语句将按顺序执行,注释语句将被解释器过滤掉,不被执行。注释一般用于在代码中标明作者和版权信息,或解释代码原理及用途,或通过注释单行代码辅助程序调试。
2.1.4 使用帮助
1)查看内置函数和类型的帮助信息
>>> help(max) 2)
>查看模块中的成员函数信息
>>> import os
>>> help(os.fdopen)
>上例查看os模块中的fdopen成员函数信息
3)查看整个模块的信息
使用help(模块名)就能查看整个模块的帮助信息。
注意先import导入该模块。
例如:查看math模块方法:
>>> import math
>>> help(math)
2.2.1 命名
给变量或其他程序元素关联名称或标识符的过 程称为命名。
Python语言采用大写字母、小写字母、数字、下划线 _和汉字等字符及其组合进行命名,
但名字的首字符不能是 数字,中间不能出现空格,长度没有限制。
注意:标识符对大小写敏感,python和Python是两个不同的名字 。
1、请选出以下不合法的标识符。
A、 PY_2 B、 _py_good
C、 春季 D、 32PPT
正确答案为:D
2.2.2 常量、变量
常量:程序中值不发生改变的元素。
比如常用的数学常数π就是一个常量。
在Python中, 通常用全部大写的常量名表示常量:
PI = 3.14159265359
变量:程序中值发生改变或者可以发生改变的元素。
变量是保存和表示数据值的一种语法元素,
在程序中是用一个变量名表示,变量名的定义必须符合命名规则。
变量,顾名思义,其值是可以改变的,可以通过赋值(使用等号=表达)方式被修改。
例如:
>>> a=99
>>> a=a+1
>>> print(a)
100
注意:Python语言中变量可以随时命名、随时赋值、 随时使用。
可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
例如:
a = 123 #a是整数
a = 'ABC‘ #a变为字符串
这种变量本身类型不固定的语言称之为动 态语言,与之对应的是静态语言。
2.2.3 保留字
保留字,也称为关键字,指被编程语言内部定义并 保留使用的标识符。
程序员编写程序不能定义与保留字相同的标识符。
每种程序设计语言都有一套保留字,保留字一般用 来构成程序整体框架、表达关键值和具有结构性的 复杂语义等。
掌握一门编程语言首先要熟记其所对应的保留字。
Python 3.x保留字列表 (35个)
2.3.1 数据类型概述
Python语言支持多种数据类型,
最简单的包 括数字类型、字符串类型,
略微复杂的包括元 组类型、集合类型、列表类型、字典类型等。
2.3.2 数字类型
表示数字或数值的数据类型称为数字类型,
Python语言提供3种数字类型:整数、浮点数 和复数,分别对应数学中的整数、实数和复数。
一个整数值可以表示为十进制、十六进制、八 进制和二进制等不同进制形式。
十进制: 1010
十六进制: 0x3F2
八进制: 0o1762
二进制: 0b001111110010
一个浮点数可以表示为带有小数点的一般形式, 也可以采用科学计数法表示。
例如:浮点数 123.456,
两种表示方式如下:
一般形式: 123.456
科学计数法: 1.23456e2
复数类型与数学中的复数相一致,采用a+bj 的形式表示,存在实部和虚部。
2.3.3 字符串
Python语言中,字符串是用两个双引号“ ” 或者单引号‘ ’括起来的一个或多个字符。
Python字符串的两种序号体系
如果字符串长度为L,正向递增需要以最左侧 字符序号为0,向右依次递增,
最右侧字符序 号为L-1; 反向递减序号以最右侧字符序号 为-1,向左依次递减,
最左侧字符序号为-L。 这两种索引字符的方法可以同时使用。
例:
>>>"读书不觉已春深,一寸光阴一寸金。"[1] ‘书’
>>>"读书不觉已春深,一寸光阴一寸金。"[-2] ‘金’
可以采用[N: M]格式获取字符串的子串,这个 操作被形象地称为切片。
[N: M]获取字符串中从N到M(但不包含M)间连续的子字符串。
其中N和M为字符串的索引序号,可以混合使 用正向递增序号和反向递减序号。
例:
>>> "对酒当歌,人生几何?"[1:4] ‘酒当歌’
>>> "对酒当歌,人生几何?"[5:-3] ‘人生’
>>> "对酒当歌,人生几何?"[4:1] ‘’
>>> "对酒当歌,人生几何?"[2:2] ‘’
>>> "对酒当歌,人生几何?"[-3:5]‘’
可以通过Python提供的len()函数获取字符串的长度,
一个中文字符和一个英文字符的长度 都记为1。
例:
>>> len("对酒当歌,人生几何?“) 10
>>> len(“Hello World!“) 12
2.3.4 布尔类型
Python支持布尔类型的数据,布尔类型只有 True和False两种值。
and 与运算:只有两个布尔值都为 True 时,计算结果 才为True。
or 或运算:只要有一个布尔值为 True,计算结果就是 True。
not 非运算:把True变为False,或者把False变为True:
在Python中,布尔类型还可以与其他数据类 型做and、or和not运算,
这时下面的几种情 况会被认为是FALSE:为0的数字,包括0,0.0; 空字符串‘ ’,“”;
表示空值的None;空集合,包括空元组(),空序列[],空字典{};其他 的值都为TRUE。
例:
>>> a = 'python'
>>> print (a and True) True
>>> b =‘’
>>> print (b or False) False
在Python中,逻辑值True和False作为数值, 则分别是整型值1和0参与运算。
>>> x=False
>>> y=True
>>> print(1+y)
2
>>> print(x+5)
5
2.3.5 空值
空值是Python里一个特殊的值,用None表 示。
它不支持任何运算也没有任何内置函数 方法。None和任何其他的数据类型比较永远返回False。
在Python中未指定返回值的 函数会自动返回None。
2.4 程序的语句元素
2.4.1 表达式
产生或计算新数据值的代码片段称为表达式。 表达式类似数学中的计算公式,
以表达单一功能为 目的,运算后产生运算结果,运算结果的类型由运 算符决定。
表达式一般由操作数和运算符等构成,这是构 成Python语句的重要部分。
练习
>>> 1024*32 32768
>>> “千里行”+“始于足下" ‘千里行始于足下’
>>> 1024<32 False
一个表达式可以由一种或多种运算组成。在 一个表达式中出现多种运算时,
将按照运算 符优先级顺序计算并解析各个部分。
2.4.2 赋值语句
Python语言中,= 表示“赋值”,
即将等号右侧的值计算后将结果值赋给左侧变量,
包含 等号(=)的语句称为“赋值语句”
<变量> = <表达式>
>>> a=1024*32
>>> print(a)
32768
同步赋值语句:同时给多个变量赋值
<变量1>, …, <变量N> = <表达式1>, …, <表达式N>
>>> a,b=1024,32
>>> x,y=“千里行”,50
>>> print(x)
‘千里行’
>>> print(b)
32
同步赋值的一个应用是互换变量的值。
例:将变量x和y交换。
采用单个赋值,需要3行语句:
即通过一个临时变量t缓存x的原始值,然后将 y值赋给x,再将x的原始值通过t赋值给y。
采用同步赋值语句,仅需要一行代码:
x,y=y,x #x和y互换数值
2.4.3 引用
Python程序会经常使用当前程序之外已有的 功能代码,这个过程叫“引用”。
Python语言 使用import保留字引用当前程序以外的功能库,
使用方式如下:
import <功能库名称>
引用功能库之后,采用<功能库名称>.<函数名称>()方式调用具体功能。
2.4.4 其他语句
(1) 分支语句
分支语句是控制程序运行的一类重要语句,
它的作用是根据判断条件选择程序执行路径。
分支语句包括:单分支、双分支和多分支。
单分支语句是最简 单的分支语句,使用方式:
if <条件>:
<语句块>
#判断输入整数是否在[0-100]之间
num = eval(input("请输入一个整数:"))
if 0<=num<=100 :
print("输入整数在0到100之间(含)")
双分支语句是覆盖单个条件所有路径的一种 分支语句,使用方式如下:
if <条件>:
<语句块1>
else:
<语句块2>
if num > 100 or num < 0:
print("输入整数小于0或大于100")
else:
print("输入整数在0到100之间(含)")
多分支语句的作用是根据判断条件选择程序执行的某一条路径,
使用方式:
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
...
else:
<语句块N>
(2)循环语句
控制程序运行,根据判断条件或计数条件确定一 段程序的运行次数。
遍历循环,基本过程:
for i in range (<计数值>):
<表达式1>
例如:使某一段程序连续运行10次(变量i用于计数)
for i in range (10):
<源代码>
循环语句有多种类型,例如条件循环,
它的作用是根据判断条件确定一段程序是否再次执行 一次或者多次。
循环语句包括遍历循环和条件循环。
基本过程:
while <条件1>:
<语句块1>
<语句块2>
<语句块1> <语句块2>
1 2 3 4 5
#输出10到100步长为3的全部整数
n = 10
while n < 100:
print(n, end=“ ")
n = n + 3
2.5 基本输入输出函数
Python内置函数
Python解释器提供了68个内置函数,这些函数不需要引用库,可以直接使用。
例如,本节要学习的3个重要的基本输入输出函数。
2.5.1 input() 函数
获得用户输入之前,input()函数可以包含一些提 示性文字 , 无论用户输入什么内容,input()函数的返 回结果均为字符串类型。
<变量> = input(<提示性文字>)
>>> input("请输入: ")
请输入: python 'python'
>>> a=input("请输入: ")
请输入: 1024.256
>>> print(a) '1024.256'
2.6 实例解析
2.6.1 源程序的书写风格
——什么样的Python代码是漂亮的?
程序设计语言如同自然语言,好的代码就像文 学作品,不仅达意,更要优美。
——什么是“好”?什么是“优美”?
领悟编程代码优美的过程类似参禅,除了不断 练习,也需要理解一些原则。
Python之禅
Python以函数库的形式内置了一个有趣的文 件,被称为“Python之禅”(The Zen of Python)。
当调用如下一行语句后,会出现一 段有趣的运行结果。
>>> import this Python
Python之禅 作者:Tim Peters
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂
复杂胜于凌乱
扁平胜于嵌套
间隔胜于紧凑
可读性很重要
即便假借特例的实用性之名,也不要违背上述规则
除非你确定需要,任何错误都应该有应对
当存在多种可能,不要尝试去猜测
只要你不是Guido,对于问题尽量找一种,最好是唯一明显的解决方案
做也许好过不做,但不假思索就动手还不如不做
如果你无法向人描述你的实现方案,那肯定不是一个好方案
如果实现方案容易解释,可能是个好方案
命名空间是绝妙的理念,要多运用
2.6.2 实例解析:倒背如流
计算机程序是机械记忆的高手,下面将编写一段 程序,获得用户输入,逆序将输入内容输出。
该程序的输入和输出实例如下:
输入:To be or not to be, that’s a question. ——莎士比亚
输出:亚比士莎—— .noitseuq a s’taht ,eb ot ton ro eb oT
以下给出了一种实现,采用正向递增序号,利用 len()函数将i设为最后一个字符的索引序号,
然后逐次输出至第一个字符。
s = input("请输入一段文本:")
i = len(s)-1
while i>=0:
print(s(i),end="")
i = i-1
给出另一种实现,采用反向递减序号,将i首先设置为-1,
直接索引最后一个字符,然后逐次输出至第一个字符。
s = input(“请输入一段文本:”)
i = -1
while i >= -1*len(s):
print(s[i], end="")
i = i - 1