2018.7.6
day04回顾:
字符串格式化表达式
字符串 % (参数)
生成一定格式字符串
%%
%d
%s
...
占位符和类型码之间的 格式化语句
%+07.2f
%-+7.2f
循环语句
break
while 语句
语法:
while 真值表达式:
语句块1
else:
语句块2
while 语句的嵌套
break 语句
作用:
跳出循环(结束包含此break语句的循环语句)
死循环:
while True:
if ....:
break
else:
.......
day05笔记:
for 语句
作用:
用来遍历可迭代对象的数据元素
可迭代对象是指能依次获取数据元素的对象
可迭代对象包括:
字符串 str
----以下后面会讲----
列表 list
元组 tuple
字典 dict
...
for 语法
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
说明:
当循环内部用break语句终止循环时,else子句部分的语句不会执行
示例见:
for.py
for2.py
for3.py
练习:
任意输入一段字符串
1) 计算您输入的字符'A' 的个数,并打印出来
2) 计算出空格的个数,并打印出来
(要求用for语句,不允许使用, S.count方法)
思考用while语句能否实现上述功能
range() 函数:
格式:
range(stop) 从零开始,每次生成一个整数后加1操作,直到stop为止(不包含stop)
range(start, stop[, step]) 从 start开始,每次生成一个整数后移动step,直到stop为止(不包含stop,且step可以是负数)
详见:
>>> help(range)
作用:
用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)
说明:
range函数调用返回的对象可用于for语句来进行依次迭代取出其中的整数
示例:
range(4) # 生成 0, 1, 2, 3
range(3, 6) # 生成 3, 4, 5
range(1, 10, 2) # 生成 1, 3, 5, 7, 9
range(5, 0, -2) # 生成 5, 3, 1
range(4, 0) # 空
见:
range.py
练习:
用for 语句打印1~20 打印在一行内
练习:
求 100以内有哪儿些整数与自身+1的乘积再对11求余的结果等于8?
x * (x+1) % 11 == 8 x附合条件
1. 写程序计算 1 + 3 + 5 + 7 + ...+ 99的和
(要求用for语句和while语句两种方式实现)
2. 用while语句实现打印:
1 3 5 7 9. .... 19
打印在一行内
3. 将上题用for语句来实现
for 语句嵌套:
示例:
for x in "ABC":
for y in "123":
print(x + y)
思考:
for x in range(5):
for y in range(10):
print(x, y, 'ABC') # 请问这条语句执行多少次?
练习:
用for 语句实现下题 :
1. 输入一个数w代表正方形的宽度,打印如下正方形:
如输入:5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
2. 写程序来改写上题:
如输入: 5
打印如下:
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
如输入: 3
打印如下:
1 2 3
2 3 4
3 4 5
continue 语句:
问题:
如何让程序不再向下执行,重新开始一次新的循环
continue语句的作用:
用于循环语句中(while, for语句),不再执行本次循环内 continue之后的语句,重新开始一次新的循环
说明:
1. 在while语句中执行continue语句,将会直接跳转到 while语句的直值表达式处重新判断循环条件
2. 在for 语句中,执行continue语句,将会从可迭代对象中取一下元素绑定变量后再次进行循环
示例见:
continue.py
练习:
1. 输入一个整数用begin绑定,
再输入一个整数用end绑定
打印从begin开始,到end结束内的全部奇数(不包含end)
2. 将上述练习改写为 用while语句实现
3. 求 1~100 之间所有不被 5, 7, 11 整除的数的和
(可以考虑用continue实现)
循环总结
语句:
while 语句
for 语句
字符串 str
range() 函数返回的对象
break 语句: 结束当前循环语句的执行
continue 语句: 结束本次循环,重新开始新的循环
列表 list
列表的定义 :
1. 列表是一种容器(通常用来存储计算机的数据对象)
2. 列表是可以被改变的序列
3. 列表是由一系列特定元素组成的,元素与元素之间可能没有任何的关联关系,但他们之间有先后顺序关系
创建空列表的字面值方式
L = [] # L绑定空列表
创建非空列表的字面值方式
L = [1, 2, 3, 4]
L = ['北京', '上海', '深圳', '西安']
L = [1, 'Two', 3.14, '四']
L = [1, 2, [3.1, 3.2, 3.3], 4]
列表的构造(创建)函数list
list() 生成一个空的列表,等同于 []
list(iterable) 用可迭代对象创建一个列表
示例:
L = list() # L = []
L = list("hello") # L = ['h', 'e', 'l', 'l', 'o']
L = list(range(5, 10, 2)) # L = [5, 7, 9]
列表的运算:
运算符:
+ += * *=
+ 用于拼接列表
x = [1, 2, 3]
y = [4, 5, 6]
z = x + y # [1, 2, 3, 4, 5, 6]
+= 用于将右侧的可迭代对象的数据追加到原列表中
x = [1, 2, 3]
x += [4, 5, 6] # x = [1, 2, 3, 4, 5, 6]
x = [1, 2]
x += "AB" # x = [1, 2, 'A', 'B']
x = [1, 2]
x += range(3) # x = [1, 2, 0, 1, 2]
* 用于生成重复的列表
x = [1, 2] * 3 # x = [1, 2, 1, 2, 1, 2]
x = list("AB")
x *= 2 # x = ['A', 'B', 'A', 'B']
列表的比较运算:
运算符:
< <= > >= == !=
比较规则:
同字符串比较规则完全相同
[1, 2, 3] < [1, 3, 2] # True
[1, 2, 3] != [3, 2, 1] # True
[1, 'two'] > ['two', 1] # TypeError 出错
[1, 'two', 3.14] < [1, '二', 3]
列表是可迭代对象:
L = [2, 3, 5, 7, 11]
for x in L:
print(x)
列表的in / not in 运算符:
判断一个元素是否存在于列表中,如果存在返回True,否则返回 False
in 和 not in 的返回值相反
示例:
x = [1, 'two', 3, '四']
3 in x # True
4 not in x # True
'3' in x # False
练习:
1 输入三行文字,将这三行文字, 保存于一个列表L中,并打印
如:
请输入: abc<回车>
请输入: 123<回车>
请输入: 你好<回车>
生成列表如下:
L = ['abc', '123', '你好']
print(L) 打印
练习:
1. 输入任意行文字,存于列表L中,当不输入任何内容直接回车后结束输入
1) 打印L列表中的内容
2) 计算您共输入了几行内容
3) 计算您共输入了多少个字符
2. 输入一个整数(代表树干的高度)
打印出如下一棵树
输入: 2
打印:
*
***
*
*
输入:3
*
***
*****
*
*
*
3. 写一个程序,任意输入一个整数,判断这个数是否是素数(prime)
素数(也叫质数), 是只能被1和自身整除的正整数:
如: 2 3 5 7 11 等
提示:
用排除法: 当判断x是否是素数是,只要让x分别除以:
2, 3, 4, 5, .... x-1, 只要整除了,那x不是素数,否则x是素数
4.算出100~1000以内的水仙化数(Naricissistic Number)
水仙花数是指百位的3次方 加上 十位的3次方 加上 个位的3次方等于原数的数
如:
153 = 1**3 + 5**3 + 3**3
答案:
153, 370, ....