循环和列表
一 while循环
1 while —else格式
while 条件:
重复执行的代码(一行或多行代码)
else:
条件不满足时执行此处代码
结论:如果while中执行了break语句,那么else就不执行,反之,就执行。
练习:判断质数
# 判定一个数字是否为质数(质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。)
分析:
num = 7 7/2 7/3 ... 7/6 7就是质数
# 判定一个数是否为质数
num = int(input("请输入一个正整数:"))
i = 2
while i < num:
if num % i == 0:
print(num,"不是质数")
break
i += 1
else:
print(num,'是质数')
循环结束的两种方式:
- 根据判定条件不成立,结束
- 通过break关键字强制结束循环
2 循环嵌套 --while 嵌套
案例:嵌套过程
# 输出一行 * * * * * *
i = 0
while i<6:
print("*",end=" ")
i += 1
# 输出如下图形:
"""
* * * * * *
* * * * * *
* * * * * *
"""
i = 0
while i<6:
print("*",end=" ")
i += 1
print()
i = 0
while i<6:
print("*",end=" ")
i += 1
print()
i = 0
while i<6:
print("*",end=" ")
i += 1
print()
# 优化成使用while循环嵌套实现
j = 0
while j<3:
i = 0
while i<6:
print("*",end=" ")
i += 1
print()
j += 1
二 for 循环
for 变量 in 可迭代对象:
重复执行的代码
1 range使用
range(start,stop,step) # 帮助构造一个从start到stop结束,步长为step的一个数列
start:起始值,包含在内,可以省略,默认为0。
stop:结束位置,不包含在内,不可省略。
step:步长,可以省略,默认为1。next = cur+step
补充:如果显式的写出了步长,那么start就不能省略。
# 构造一个从[1,10]的数列
range(1,11)
# 打印[1,10]
for i in range(1,11):
print(i)
# 从[0,100]的所有偶数
range(0,101,2) # 正确
range(101,2) # 错误
# 构造一个从[100,1]的所有数
range(100,0,-1)
# 构造一个从[100,1]的所有奇数
range(99,0,-2)
2 for—else
# 使用for循环,判断一个数是否为质数
num = int(input("请输入一个数字:"))
for i in range(2,num):
if num % i == 0:
print("不是质数")
break
else:
print("是质数")
总结:
一般情况下,二种方式都可以实现
- for循环:主要用于迭代一个对象或明确循环次数
- while循环:不确定循环次数,或者已知是一个条件的话
三 列表(list)
场景:记录全班所有人的名字
name1 = 'zs'
name2 = 'ls'
name3 = 'ww'
name4 = 'ml'
存在的问题:多个值需要用到多个变量,且多个变量之间没有直接关系,使用不方便
(一) 定义
定义:列表是一个可修改的,元素以逗号分割,以中括号包围的有序序列。
特点:可变的,中括号包围 ,有序,序列。
格式:列表名 = [item1,item2,item3..]
序列一定是可迭代对象
练习:记录全班人的姓名
names = ['zs','ls','ww','ml']
ages = [20,25,30,23]
height = [180,175,188,176]
print(names)
type(names) # list
使用: 列表一般用于存放同种类型的数据。记录多个对象的同一个信息。
( 二 )序列操作
1 索引
索引:下标,给序列中每个元素编号
作用:通过索引方式查看元素
格式:列表名[索引值]
编号方式:
- 从左到右(正向):从0开始,逐渐递增,最大索引值:长度-1
- 从右到左:从-1开始,逐渐递减,最小索引值是:-长度
# 通过索引查看元素
names = ['zs','ls','ww','ml']
# 查看ww
print(names[2])
print(names[-2])
# 索引值要在正确范围内
print(names[8]) # 报错
2 切片
注意:切片将序列拷贝,操作的是拷贝对象,不是原序列。
作用:一次获取多个元素
格式:列表名[start:stop:step]
- start :起始位置,包含在内,可省略,默认为第一个元素
- stop :结束位置,不包含在内,可省略,默认为最后一个元素。
- step:步长,可省略,默认为1,正数表示从左到右顺序,负数从右到左顺序
# 通过索引查看元素
age= [1,5,1,4,8,9,10,6]
# 将ls和 ww 取出来
age[1:3:1] # [5,1]
#
age[:1] # [1]
age[1:] # [5,1,4,8,9,10,6]
age[1:6:2] # [5,4,9]
age[::1] # 等价于 age[::],age[:] [1,5,1,4,8,9,10,6]
age[-3:-1] # [9,10]
age[3:1:-1] # [4,1]
# 将age倒序
age[::-1] #
print(age) # 不影响原列表
3 拼接(+)和重复(*)
l1 = [1,2]
l2 = [3,4]
# 将两个列表合并
l3 = l1 + l2
print(l3) # 形成新列表:[1,2,3,4]
# 重复
l1 * 2 # l1 +l1 = [1,2,1,2]
4 赋值
要求: 变量数量和元素数量保持一致
li = ['1','2','3']
a,b,c = li # a='1',b= '2' c ='3'
a,b = li #
5 遍历
li = [1,2,3,4,5,6,7,8]
# 使用for循环(推荐)
for i in li:
print(i)
l1 = [1,2]
l2 = [3,4]
# 将两个列表合并
l3 = l1 + l2
print(l3) # 形成新列表:[1,2,3,4]
# 重复
l1 * 2 # l1 +l1 = [1,2,1,2]
4 赋值
要求: 变量数量和元素数量保持一致
li = ['1','2','3']
a,b,c = li # a='1',b= '2' c ='3'
a,b = li #
5 遍历
li = [1,2,3,4,5,6,7,8]
# 使用for循环(推荐)
for i in li:
print(i)