day04 break/continue、for-else、列表(性质、增删改)、下标和切片

01 break and continue关键字

案例:数字炸弹游戏。给定一个范围中的一个数字,N个人去猜,猜对了有惩罚。

random:随机模块
randint(a,b):从[a,b]中随机选取一个整数

import random
num = random.randint(1,100)
print(num)

案例:猜数字

import random
count = 0
flag = True
while flag:
    selfNum = int(input('请输入您猜的数字:'))
    count += 1
    if selfNum > num:
        print('再小一点')
    elif selfNum < num:
        print('再大一点')
    else:
        print('恭喜你猜对了')
        # flag = False
        break
    print(f'第{count}次')
print(f'一共猜了{count}次')
  1. break和continue:循环关键字,只能放到循环中使用。
  2. break:被触发时,直接结束break所在循环。
  3. continue:被触发时,直接结束当前循环进入下一次循环
for i in range(1,21):
    if i % 5 == 0:
        print('********')
        # continue
        break
    else:
        print(i)

02 for else

案例:判断1到100之间的所有的素数(质数)

素数:只有1和它本身两个因子的数叫做素数,最小的素数是2。

for i in range(1,101):
    if i ==1:
        print(f'{i}不是素数')
    elif i == 2:
        print(f'{2}是素数')
    else:
        for j in range(2,i):
            if i % j == 0:
                print(f'{i}不是素数')
                break
        else:
            print(f'{i}是素数')
  • 应用场景:当所有情况都必须判断完才能下结论是使用for-else语句
  • 用户名合法问题

语法:
for 变量 in 容器:
代码块
else:
代码块
当for循环正常结束时,else语句被执行;当for循环非正常结束时,else语句不执行
break、return等关键字for影响for循环的正常结束

03 列表的性质

列表

一、作用:

一次性存放多个元素。

二、列表的性质

  1. 列表是可变的。(可以做修改,增删改)
  2. 列表是有序的。(下标,每个元素有自己的固定位置)
  3. 列表的容器标志:[];列表的类型:list
  4. 列表中可以存放任意类型的数据。(建议:一个列表中的数据类型保持一致)
  5. 列表中允许出现重复元素
  • 创建一个空列表:
list1 = []
list2 = list()
print(list1,list2)
  • 创建一个非空列表
list3 = [1,1.1,True,None,'ABCDE',[123],(1,2,3)]
print(list3)
  • len():能够查看容器中元素的个数(长度)
print(len(list3))

A. 对列表进行循环遍历

for i in list3:
    print(i,type(i))

B. 列表的重复和拼接
拼接:生成的是一个新的列表

list1 = [1,2,3]
list2 = [4,5,6]
list3 = [1,2,3]
print(list1 + list2 + list3)

C. 重复

print(list1 * 5)

04 下标和切片

一、下标:

有序容器中每个元素的位置索引
下标分为正向下标负向下标
正向下标:从0开始,从左向右依次递增
负向下标:从-1开始,从右向左依次递增
获取的是单个元素

list1 = ['王者荣耀','阴阳师','三国杀','和平精英','光遇']
  • 通过下标获取元素:语法:容器[下标]
print(list1[1])
print(list1[-4])

二、切片

作用:获取有序容器中部分元素

  • 语法:容器[start : end : step]
    在这里插入图片描述
  • step默认为1可以不写,表示从左向右取元素。start和end也都可以不写,表示代表开头和结尾。
  • start和end可以使用正向下标和负向下标。切片是左闭右开区间。
  • 结果获取的还是列表
list1 = ['王者荣耀','阴阳师','三国杀','和平精英','光遇']
print(list1[1:-1])    #['阴阳师', '三国杀', '和平精英']
print(list1[1:-1:2])  #['阴阳师', '和平精英']
print(list1[:])       #['王者荣耀', '阴阳师', '三国杀', '和平精英', '光遇']
print(list1[:-1])     #['王者荣耀', '阴阳师', '三国杀', '和平精英']
print(list1[1:])      #['王者荣耀', '阴阳师', '三国杀', '和平精英']
print(list1[-1:-5:-1])#倒序  ['光遇', '和平精英', '三国杀', '阴阳师']
print(list1[::-1])    #列表倒序
print(list1[-1:-5:-3])#['光遇', '阴阳师']
  1. 如果step>0,end对应的元素必须在start对应元素的后边。下一次获取的元素为本次获取元素的下标+步长对应的元素。
  2. 如果step<0,end对应的元素必须在start对应元素的前边。下一次获取的元素为本次获取元素的下标+步长对应的元素。

练习:

list2 = ['柯南', '百变小樱', '奥特曼', '甄嬛传', '海贼王', '火影忍者', '斗破苍穹']

# 1.获取['柯南','奥特曼','海贼王','斗破苍穹']
# 2.获取['斗破苍穹','甄嬛传','柯南']
# 3.获取['奥特曼','百变小樱','柯南']
# 4.获取['柯南']
# 5.获取  柯南
print(list2[::2])
print(list2[-1::-3])
print(list2[2::-1])
print(list2[0:1])
print(list2[0])

区别: 下标不能越界,切片可以越界

list2 = ['柯南', '百变小樱', '奥特曼', '甄嬛传', '海贼王', '火影忍者', '斗破苍穹']
list2[8]   #IndexError: list index out of range
list2[0:10000]

05 循环遍历

有序容器的循环遍历分为直接遍历间接遍历

  1. 直接遍历
list1 = ['A','B','C','D']
for i in list1:
    print(i)
  1. 间接遍历
for index in range(len(list1)):
    print(f'下标{index}---->{list1[index]}')
# for index in range(len(list1) * -1, 0):
for index in range(-len(list1), 0):
    print(f'下标{index}---->{list1[index]}')

练习:获取元素’C‘的下标

list1 = ['A','B','C','D']
for i in range(len(list1)):
    if list1[i] == 'C':
        print(i)
        break

06 列表的增删改

一、增加

append:在列表的末尾追加一个元素
insert:在列表的任意位置添加一个元素
extend:将一个容器的元素添加到列表中

list1 = []
print('---向列表中添加元素---')

#append
list1.append('Python')
list1.append('Java')
print(list1)

#insert
list1.insert(1,'C++')
print(list1)

#extend
list2 = ['UI','C','Go','HTML','Pyhton']
list1.extend(list2)
print(list1)

二、 修改

通过下标修改元素

list1[1] = 'Python'
print(list1)

三、 删除

del:通过下标删除元素,下标超出范围报错
remove:删除指定的元素,要删除的元素不存在要报错
pop:通过下标删除元素,下标超出范围报错 删除的元素还可以被找回
clear:清空列表

#del
del list1[0]
print(list1)

#remove
list1.remove('C')
print(list1)
list1.remove('Python')
print(list1)  # 一次只删第一个删除元素

#pop
content = list1.pop()
print(content)
print(list1)

#clear
list1.clear()
print(list1)

练习:生者死者游戏。

30 个人在一条船上,超载,需要 15 人下船。于是人们排成一队,排队的位置即为他们的编号.报数,从 1 开始,数到 9 的人下船。如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

peopleList = []
for i in range(1,31):
   peopleList.append(i)
while len(peopleList) > 15:
   num = 1
   while num < 9:
       num += 1
       peopleList.append(peopleList.pop(0))
   people = peopleList.pop(0)
   print(people)
print(peopleList)
船了呢?
```python
peopleList = []
for i in range(1,31):
   peopleList.append(i)
while len(peopleList) > 15:
   num = 1
   while num < 9:
       num += 1
       peopleList.append(peopleList.pop(0))
   people = peopleList.pop(0)
   print(people)
print(peopleList)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值