循环语句和列表元素
1. for循环
由于while循环最大的问题就是始终要考虑循环次数的问题,那么有什么方法不用考虑呢?
for i in range 'Python':
print(i)
执行的结果为
依次打印它每个字符
在这里,字符串的长度决定循环次数,取完字符串的内容,循环就结束了。
- for循环可以吧字符串里面的每个元素都依次取出来,自动赋值给变量i,然后再执行循环体内的代码块
- for循环不需要考虑次数,循环次数由后面的对象长度来决定
for i in range(10):
print(i,end=',')
结果如下
首先说下range的意义,range函数可以取到一个范围内的整数,相比while要简单很多,也是常用在for循环里面的一个取整函数
print里面的end可以设置每个值打印之后输出的字符串是否换行,用什么形式换行
for循环总结:
for循环又称为计数循环(遍历循环),是因为for循环次数由可迭代对象来决定
我们学过的字符串就是可迭代对象,以及我们后面要学的列表、元组、字典、集合等都属于可迭代对象。
循环次数
for循环次数由被循环的 可迭代对象决定
range(x)
输出从0到x-1的整数(掌握其用法)
变量值不受影响
如上例子,i的值不受循环体中代码的影响,下次循环依旧按照循环来赋值
2. continue
思考一:现在在循环的过程中,只要数字能够整除2和3就跳过,进入下一次循环该怎么做
思考二:上一次我们说了循环可以被break终止,那能不能不终止循环,只跳过一次循环呢
for i in range(10):
if i%2==0 and i%3==0:
continue
else:
print(i,end=',')
continue会跳过本次循环,即结束本次循环,进入下一个循环
我们来分析一下,i通过循环会依次为0,1,2,3,4,5,6,7,8,9,里面有个判断条件,如果i能整除2和3就continue,当i为o时,它是不是满足条件,执行continue,意思就是直接进入下一个循环也就是i为1的时候,不会再去看下面的代码,当为6的时候也是如此,所以它不会打印0和6,因为0和6都能整除2和3.
for i in range(100):
if i % 2 == 0 or i % 3 == 0:
continue
elif i % 15 == 0:
break
else:
print(i,end=',')
else:
print("循环结束")
想想这个执行下去会是什么?
结果如下:
结果是这样,是不是有点想不通,不是里面有break吗,为什么都执行完了。还输出了“循环结束呢”
分析一下,当i到15的时候,15是可以整除3的所以,不会执行下面的语句,当i等于30的时候呢,他也是能整除2和3的,所以还是不会执行下面的语句的,一直到15的倍数都是不会被执行的。因为上面的条件直接continue了他,所以一直回到循环结束
那我们改一下如下
for i in range(100):
if i % 2 == 0 or i % 3 == 0:
continue
elif i % 11 == 0:
break
else:
print(i,end=',')
else:
print("循环结束")
这个的执行结果会是怎样呢
结果如下
自己分析,我想你已经明白了continue和break的用法了吧。
3. 列表推导式
思考一:现在我想得到100内所有的偶数,该怎么做呢?
思考二:我们都知道print是不能把值赋给变量,现在就是要存储这些值该怎么做呢?
思考三:存储这些值有什么好的方法不用那么多变量呢?
for i in range(100):
if i % 2 == 0:
print(i)
上面的代码就可以打印出所有100以内的偶数了
可以是我们要把结果存储起来怎么弄,接下来就要用到列表了
list = []
for i in range(100):
if i % 2 == 0:
list.append(i)
print(list)
结果如下
是不是和之前一样了
上面的list就是一个列表,我们已经把100以内的偶数添加到list这个列表里面去了,list.append(i)就是把i的值添加到list的列表里面,’.append()’是吧一个值加到列表的后面。
我们可以简洁一点,用三目运算,如下
list = [i for i in range(100) if i % 2 == 0]
是不是一个道理,上面那个代码就叫列表推导表达式。
我们来解释下列表推导表达式,‘i’是保存在列表中的值,‘for i in range(100)’是for循环来得到的值,‘if i % 2 == 0’是if用来判断对值进行筛选,‘[]’表示一个列表
总结:列表推导式可以快速生成一个列表,并能筛选列表的值
4. 列表
思考一:列表是干什么的?
思考二:我们要放好多东西,比如一个人的身高、年龄、性别,有的是字符串,有的是数字,如果分开放会很不方便,能不能放一起呢?
list_one = ['xiaoyu', '男', '175', 120]
上面这个列表就可以放字符串也可以放数字,初次之外,列表里面几乎可以放python的任何对象。
- 列表的索引取值
列表中每个元素在列表中的位置称为索引(index),可以通过索引值来取对应位置上的值
索引值是从0开始
负索引就是从列表尾往前数
索引值超过长度就会报错
- 列表的切片
列表还可以根据一个范围来取值,这叫做切片
切片是两个范围之间取值,且后面的数取不到
切片时超过范围也没关系
切片时还可以指定步长
- 列表的增删改查
查找:可以根据元素,找到元素的索引值
添加元素三个方法:append、extend、insert
如果是直接两个列表相加,记得重新赋值
替换:利用索引取值可以直接替换
删除:pop、remove、del、clear四种,删除是不可逆的,所以删除钱要确定好。
- 列表的其他方法
复制:复制列表,类似于保存快照
count:可以统计列表中某个元素出现的次数,也属于查找
reverse:是将列表顺序颠倒过来,没有排序
sort:对列表中元素进行排序,采用Tomsort算法进行排序
sorted:临时排序- 不可变的“列表”一元组
上述为元组
元组:类似列表,可以进行索引取值,单元素不能更改,一旦确定,就无法改变
如果元组只有一个元素,要在后面跟上逗号,否则只会当做一个元素而不是元组
拆包:元组可以同时赋值给多个变量,只要变量个数不超过元组长度,变量前面加上*号则可以将多余元素都接受,并组成一个列表。
5. 作业
- 用for循环打印出99乘法口诀
- 一个列表中有重复元素,编写程序,移除重复元素
列表:li = [1,1,1,2,2,3,3,3,3,3,3,4,4,5,6,5,6]
ok,下次揭晓答案!!!!
上期作业代码如下
1、while99乘法表
i = 1
while i <=9:
j = 1
while j < i+1:
print(f'{j}x{i}={j*i}',end='\t')
j += 1
print()
2、简单的猜数字游戏
import random
a = random.randint(1,100)
i = 1
while i <= 5:
b = int(input('请输入你猜的一个数:'))
if b > a:
print('大了')
elif b < a:
print('小了')
else:
print(f'第{i}次你终于猜对了')
break
i += 1
else:
print(f'{i-1}机会已经用完,下次加油哦!')