day05
for语句:
作用:
用来遍历可迭代的对象的数据元素
遍历是指依次经历对象,并且只经历一次
可迭代对象是指能依次获取数据元素的对象
(字符串/range()/列表)
可迭代对象包括:
字符串 str
---以下后面会讲-----
列表 list
元组 tuple
....
for语句语法:
for 变量列表 in 可迭代对象:
语句块1
else: (当迭代结束时才被执行)
语句块2
示例:
for.py
练习一:
1.任意输入一段字符串
1)计算出输入字符'a'的个数,并打印出个数
2)计算出空格的个数,并打印出个数
(要求用for语句,不允许用str,count语句)
思考:
用while语句能否实现上述功能
for语句说明:
else子句部分可以省略
当在循环内部用break终止循环时,else子句部分不会执行
示例:
见for1.py
range函数:
range(stop) 用来生成0-stop区间内的整数直到stop为止(不包含stop)
range(start,stop[,step])
起始 终止 步长
用来生成start~stop区间内的整数,直到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) #空
练习二:
1.用for语句打印1~20的整数,打印在一行内:
1 2 3 4 5....20
2.计算1+3+5+7+9+....+99
分别用for和while实现
for语句变量可能不被创建的问题:
for x in range(4,0):
print(x)
print('x绑定',x)
示例:
for2.py
for注意问题:
示例:
for3.py
for语句的嵌套:
for x in "ABC":
for y in "123":
print(x+y)
#打印九次
思考下列程序的打印次数:
for x in range(5):
for y in range(10):
print("hello")
#请问打印多少个hello?
练习三:
1.求:100以内有哪些数与自身+1的乘积再对11求余等于8?
x*(x+1)%11==8
2.输入一个数,打印如下正方形(用for实现)
请输入:5
打印:
12345
12345
12345
12345
12345
3.请输入一个数,打印如下正方形(用for实现)
请输入:5
打印:
12345
23456
34567
45678
56789
4.用程序生成如下字符串:
1)"ABCDEFG.....XYZ"
2)"AaBbCcDd........XxYyZz"
提示:
可以用ord和char函数
5.打印全世界所有的文字
continue语句:
作用:
用于循环语句(while,for中),不再执行本次循环continue之后的语句,重新开始新一次的循环
语法:
continue
说明:
1.在while语句中执行continue,将会直接跳转到while语句的真值表达式处重新判断循环条件
2.在for语句中执行continue语句,将会从可迭代对象中取下一个元素,绑定变量后再次进行循环
fo中使用continue语句的示例:
continue.py
continue1.py
练习四:
1.求1-100之间所有不能被2,3,5,7整除的数的和
while中使用continue语句的示例:
while_continue.py
循环小结:
四条语句:
while语句
for语句
break语句 # 协助循环
continue语句 # 协助循环
可迭代对象:
str字符串
range() 函数返回的对象
列表list
问题:
如何将计算机运算的数据临时保存在一个地方,同时又方便添加,删除和修改等操作
容器
列表的定义:
列表是一种容器
列表是可以改变的序列
列表是由一系列特定元素组成的,元素与元素之间可能没有任何的关联关系,但他们之间有先后顺序关系
python3中的五种序列类型:
字符串str
列表 list
元组 tuple
字节串 bytes
字节数组 bytearray
创建空列表的字面值表达式
[] #创建一个空列表
l=[] 变量l绑定一个新创建的一个空列表
创建飞空的列表的字面值:
l={1,2,3,4} 变量l绑定一个新创建且含有四个元素的列表
l=['beijing','shanghai','shenzhen']
l=[1,'Two',3.14,'四']
l=[1,2,[3.1,3.2,3.2]]
列表的构造函数list:
list() 生成一个空列表,等同于[]
list(iterable) 用可迭代对象创建一个列表
示例:
l=list() #l=[]
l=list("hello") #l=['h','e','l','l','o']
l=list(range(5)) #l=[0,1,2,3,4]
列表的运算:
算术运算:
+ += * *= (运算规则与字符串的运算规则相同)
+ 用于拼接列表,生成新的列表
x=[1,2,3]
y=[4,5.6]
z=x+y #z=[1,2,3,4,5,6]
+= 用原列表与右侧可迭代对象追加来修改原列表
语法:
列表变量 += 可迭代对象
示例:
x = [1,2,3]
y = [4,5,6]
x += y #x=[1,2,3,4,5,6]
x += 'ABC' #x=[1,2,3,'A','B','C']
x = [1,2,3]
x += range(4,6) #x=[1,2,3,4,5]
# +=是改变原来的列表对象,并不会创建新的列表
x = [1,2,3]
print(id(x))
x += [4,5,6]
print(id(x))
示例:
list_add.py
注:列表是可变的对象,+=是修改原来的对象
字符串是不可变对象 +=是创建新的对象
* 生成重复的列表
x=[1,2]*3 #x=[1,2,1,2,1,2]
*= 生成重复的列表,并改变对变量的绑定
x=[1,2,3]
x*=4 #x=[1,2,3,1,2,3,1,2,3,1,2,3]
列表的比较运算:
运算符:
< <= > >= == !=
比较规则与字符串的比较规则相同
示例:
[1,2,3]<[1,2,4] #True
[1,2,3]<[3,2,1] #True
[1,2,3]==[3,2,1] #False
[2,3]>=[1,2,3] #True
[1,'2']>['2',1] #报错
['ABC',1,2,3]<['123',3,2] #False
列表是可迭代对象
l=[1,3,5,7]
for x in l:
print(x) #1 3 5 7
练习五:
1.输入三行文字,将这三行文字保存在列表L中,并打印
如:
请输入:abc<回车>
请输入:1234<回车>
请输入:你好<回车>
生成如下列表L=['abc','1234','你好']
print(L)
2.输入任意行文字,存于列表L中,当不输入内容直接回车后结束输入:
1)打印列表L的内容
2)打印出您刚才输入了几行文字信息
3)打印出您刚才输入了多少个字符数据
课后练习:
1.写一个程序,任意输入一个数,判断这个数是否是素数(prime)
素数(也叫质数),是只能被1和自身整除的正整数
如:2 3 5 7 11 13 17 19....
提示:
用排除法:判断x是否为素数时.只要让x分别除以2,3,4,5...,x-1
只要能整除则x不是素数,否则x时素数
2.输入一个正整数(代表树干的高度)
打印如下一棵圣诞树
如:
输入:2
打印:
*
***
*
*
输入:3
打印:
*
***
*****
*
*
*
3.算出100~999之间的水仙花数(Narcissistic Number)
水仙花数是指百位的3次方+十位的3次方+个位的3次方等于原数的整数
例如:
153=1**3+5**3+3**3
答案:
153 370...