第十一章 嵌套与可变循环
Python 3.X里 print()函数默认是自动换行的,所以本章代码会有很多问题,实际上 print()函数里有一个默认参数 end,
默认情况下: end= "\n"
把它换成 空字符 "",
print("*",end = "")即可实现不换行。
举例:
同理,在长字串中增加换行,只需添加\n即可。
11.1
嵌套并不复杂,但是每一层的循环语句末尾要写 冒号 :
从其它语言转Python的人来说,这是个比较容易忘的符号。
若循环体内的代码没有自动缩进,请检查是否忘记输入冒号
for multi in range(5, 8):
for i in range(1, 11):
print(i,"x",multi, "=", i* multi)
print () #这个print专门用来提供一个空行
11.2
可变循环,在这里指的是用 变量 来设置 循环的范围。
比如:for i in range( 0, num ) 在执行此句前 对num 进行赋值,以达到动态确定范围的目的。
实际上,循环的起点、终点都可以用变量来表示。
11.4
初学编程,在每一层循环的开始第一行,打印一下循环变量的值,可以帮助理解,最后可以用 # 号将代码变成注释,不影响最终输出效果。
11.6
对于较长的代码行,可以用 “\” 来表示分行,或者在多行的代码前后加“(”“)”总的括起来。
练习1
time.sleep(1) 起到的作用是让 程序暂停1秒种。
这里的time是Python命名空间的用法,在第15章将会看到。Python将很多概念进行了简化,这种不区分实例、类,不做变量类型设定 的做法,在理解上会有一些问题。
练习3
Python3重点:对换行进行精确控制。
range(i)代表了从0到i-1的范围,非常的方便。
结合可变循环概念,实现经典的9*9 乘法表:
第十二章 列表
C语言中称为数组,Python中称为列表,它相当于C#中的集合。C 系列语言的基因中,数组是长度不可变,数据类型不可变的,这大大限制了数组的可用性。Python中的数组用法非常灵活,实际上ActionScript等语言中都是这么灵活的在使用数组,这是很多人喜欢Python的一个理由。
12.1
列表的两种用法
1)先定义再使用:
family = []
family.append("Dad")
2)直接定义并填充,之后仍可添加数据。
family = ["Dad","Mom","Brother","Sister"]
12.6
从列表中获取元素是通过索引号来实现的,首个索引号为零。
print(family[0]) # 输出 Dad
12.7
Python特色功能,按两个索引位置读取数据:
print(family[1,3]) # 输出 Mom Brother
从索引 1 开始(实际上是第二个数据),至索引 3 之前结束(第四个数据之前)
输出的仍为列表,所以有中括号和引号,数据类型为list。
12.8—12.12
列表的各种花式操作,平时用的不会很多。
12.13
列表排序,同类型数据排序是比较有用的方法。
混合数据类型的排序是不被支持的。
练习4
nameList = []
for i in range(5):
name = input("请输入一个名字:")
nameList.append( name )
print("输入的名字有:", end =" ")
for j in nameList :
print(j, end =" ")
index = int( input("想替换哪个名字?(1-5):"))
newName = input("请输入新名字:")
nameList[index-1] = newName
print("新名单是:", end =" ")
for j in nameList :
print(j, end =" ")
上面的代码中未包含数据有效性检验,index的大小应该在列表的数据个数范围以内。
让用户指定第几个数据时,用户不知道是从零开始计数,所以代码里要对index–1,这样才是普通用户想指定的那个名字。
index未修正前的一个错误示范:
用户指定修改第3个名字,实际修改了第4个名字,将index-1后,就正常了。
提示:
1)对于需要多次输入的数据,可以放到循环语句中。
2)输入的数据,如果要做数学计算,记得 字符 转换成 数字。
3)列表的首个索引位置值为零,在统计个数、设定循环变量时,这个很重要,以后会慢慢习惯的。
第十三章 函数
13.1
定义函数时,函数名后面记得加 冒号。
即使是在同一个代码块里,也要先定义函数,再使用它。
注意缩进,别把执行函数的代码,变成了函数的一部分,如下面所示的那样:
13.5
函数的意义在于:根据给定的参数,用一段相同的代码,实现不同的输出。或者说,是对软件功能模块的一个划分,是段落式的代码组织方式。
13.6
从函数名开始,括号内的参数名,与外部的参数仅是对应关系。函数内的变量在执行完毕后,就会被清除掉。
函数外定义的变量是全局变量。全局变量在函数体内是可以访问的,但不会被改变。尝试在函数体内改变全局变量的做法,只相当于在函数体内增加了一个同名的局部变量。
为了在函数体内改变全局变量的内容,需要使用 global关键字。
练习1
猛然看到习题吓一跳,它明显超纲了啊,每个字母作一遍编码,再按行串起来,最后对输入的名字拆成字母,每个字母调用不同的函数,老鸟都得想半天啊。
初学者肯定做不到啊,肯定是自己想多了。所以想到应该是上图中的代码,练习题的重点是可以重复打印,怎么生成的图形不是重点。
第十四章 对象
能坚持到这一章,您已经超越C语言了。因为C语言里最复杂的数据类型是 结构(structure),没有“对象”的概念。到了C++才有了“对象”的概念,随之而来的是OOP概念(面向对象的编程)。Python淡化了概念之间的鸿沟,将 对象 理解为 函数 和 参数 的混合体就好了,它是比单纯的函数 更高级的一种数据、代码组织方式。
万事万物都是对象(object),将对象的描述 抽象成定义,就是 类(class)。
类 是 对象 的定义和描述。
对象 是 类 的一个个具体的实例。
可以把 对象 看做是程序运行中间才存在的数据实体。
存贮在电脑中的代码文件 看做是 类 的定义文件。
很多时候,口语习惯是混着说这两个词。
14.2
动态添加类属性。在对象的使用过程中,给它添加的属性,都属于动态添加的属性。
动态添加的属性,仅属于被添加的对象。通过 类定义 来生成的新对象不具备刚添加的属性。下面的代码就是这样的例子:
14.4
通过 __init__() 函数对类 进行初始设置。
通过 __str__() 函数来指定默认情况下的输出信息,通常用来显示内置属性的内容。
14.5
self 是普遍遵守的参数名设定,换成其它名字也是可以的。
14.6
len( self.condiments )>0
len 函数返回数组的长度
14.7
Python 通过“遵守规则”来简化数据的访问限制。尽量通过“方法”来访问属性,而不是直接去设置属性,因此,不再考虑类的访问限制(private私有 public公有 protect 受保护 在Python中统统不存在的)。
方法(Method)中可以添加对数据的校验的内容,从而避免无效数据(比如超范围的数据)进入到对象中。
14.8
“不同的类中具有同名的方法”这个不是传统意义上的多态。传统的多态 通常指的是“同一个”类中通过参数形式的变化,达到不同的效果。
第十五章 模块
模块是存贮代码时的一种策略,相当于将多个函数打包放在一起,使用时用import 命令导入。
几个常的模块:
import time
time.sleep(30) # 休眠30秒
import random
random.randint(0,100) # 产生一个0到100之间的整数
random.random( ) # 产生一个0到1之间的小数
精确导入函数的方法:
from random import randint
print(randint(0,100)) # 产生一个0到100之间的整数
练习3
通过增大重复次数,可看到,randint(1,20)函数的结果中包含1 和 20
相关软件网盘下载
easyGuihttps://pan.baidu.com/s/1lYFo7Jm4QEngQGc11w_XNApan.baidu.com
install Pygamehttps://pan.baidu.com/s/1rwPDiHBgMsuM6NscGeS0oApan.baidu.com
Pygame 64位https://pan.baidu.com/s/1ETyDYZWcW_JJJgZWCVR5fwpan.baidu.com
Pygame 32位https://pan.baidu.com/s/1F_Vd07FW8k3jU9DyPaX-Jgpan.baidu.com
Pyhton3.6 64位https://pan.baidu.com/s/11XWyLN8TlzZaegwcV91uuApan.baidu.com刘崇军:与孩子一起学编程(Python读书笔记 )zhuanlan.zhihu.com刘崇军:与孩子一起学编程(Python读书笔记2)zhuanlan.zhihu.com