day11 小知识
1.列表切片
-
如何将列表中截取一段数据
""" example01 - 列表的切片操作 切片语法 ---> list_obj[start:end:step] """ import random nums = [random.randrange(1, 100) for _ in range(9)] print(nums) print(nums[2:]) print(nums[::]) print(nums[::-1]) print(nums[1:3]) print(nums[2:7:2]) print(nums[10:15]) print(nums[5:1])
2.创造列表的三种方式
list1=['a','b','c']
# 创建列表方法一:字面量语法
list2=list(range(1,10))
# 创建列表方法二:构造器方法
list3=[i** 2for i in range(1,10)]
# 创建列表方法三,生成式(推导式)语法
3.成员运算,列表合并,列表比大小(整数,字符串,字母)
(查看字符对应编码,查看编码对应字符)
"""
ord()函数,查看字符对应编码
chr()函数,查看编码对应字符
"""
print(10 in list3)
print(5 not in list2)
# 成员运算
list5=[1,3,5,7]
list6=[4,4,8]
list6+=list5
print(list6)
# 合并
list7= list(range(1,8,2))
list8=[0,3,5,7,9]
print(list7>list8)
# 比大小比最开始那个数字
list9 =['apply']
list10 =['black']
print(list9>list10)
# 根据字母的编码 比大小
print('王大锤'<'游端炜')
# 康熙字典
4.列表的各种高级函数
nums =[0,10,100,1000]
nums.append(10000)
# 在最后添加一个数据
nums.insert(1,5)
# 在指定位置添加元素
nums.pop()
# 删除最后位置的元素
nums.pop(0)
# 删除指定位置的元素
del nums[0]
# 删除指定位置元素,不常用
nums.remove(1000)
# 如果有多个1000.移除第一个
while 1000 in nums:
nums.remove(1000)
# 删除所有1000
if 1000 in nums:
print(nums.index(1000))
# 显示1000所在位置
if 1000 in nums:
print(nums.count(1000))
# 计数1000个数
nums.reverse()
# 反转操作
nums.sort()
# 排序,默认是:升序从小到大。(reverse=True),可以改成降序。
nums.sort(key=int)
# 将列表的元素转化成整数的形式排序
5.两种排序
nums = [35, 12, 99, 58, 67, 42, 49, 31, 75]
for i in range(len(nums) - 1):
# 假设第一个元素就是最小值
min_value, min_index = nums[i], i
# 通过循环寻找有没有更小的值并记下它的位置
for j in range(i + 1, len(nums)):
if nums[j] < min_value:
min_value, min_index = nums[j], j
# 将最小的值换到最前面的位置
nums[i], nums[min_index] = nums[min_index], nums[i]
print(nums)
# 1.选择判断法
for i in range(1, len(nums)):
for j in range(0, len(nums) - i):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
print(nums)
# 2.冒泡排序
day11 昨日作业
1.输入三个整数,按照从大到小的顺序输出
import time
start = time.time()
nums_1 = []
nums_2 = []
for i in range(3):
num = int(input('请输入整数:'))
nums_1.append(num)
max_1 = min_1 = nums_1[0]
nums_2.append(nums_1[0])
nums_1.pop(0)
for _ in range(2):
if nums_1[0] >= max_1:
nums_2.insert(0, nums_1[0])
max_1 = nums_1[0]
nums_1.pop(0)
elif nums_1[0] < min_1:
nums_2.append(nums_1[0])
min_1 = nums_1[0]
nums_1.pop(0)
elif max_1 > nums_1[0] > min_1:
nums_2.insert(1, nums_1[0])
min_1 = nums_1[0]
nums_1.pop(0)
print(nums_2)
end = time.time()
print(f'程序执行时间:{end - start:.4f}s')
2.向列表中添加10个随机整数,找出其中第2大的元素
import time
import random
start = time.time()
nums = []
n = 0
max_1 = max_2 = 0
for i in range(10):
a = random.randrange(1, 100)
nums.append(a)
n += 1
if n == 2:
max_1 = max(nums)
max_2 = min(nums)
if n > 2:
if max_1 > a > max_2:
max_2 = a
if a > max_1:
max_1, max_2 = a, max_1
print(nums)
print(max_2)
end = time.time()
print(f'程序执行时间:{end - start:.4f}s')
3.21根火柴游戏:有21根火柴,人和计算机轮流拿,人先拿(输入拿几根)计算机后拿,每次至少1根最多4根,拿到最后一根火柴的算输,要确保计算机一定可以获胜!
import time
start = time.time()
print('欢迎来到21根火柴游戏')
x = 21
while True:
a = int(input('请输入你拿的火柴数:'))
if 4 >= a >= 1:
com = 5 - a
x -= com + a
if x <= 0:
print('游戏结束,你输了')
break
else:
print('电脑选择拿:', com, '根')
print('还剩', x, '根')
else:
print('超出范围请重新输入你拿的火柴数:')
end = time.time()
print(f'程序执行时间:{end - start:.4f}s')
day11 今日练习
-
persons=[True]*30 index,counter,number=0,0,0 while counter<15: if persons[index]: number +=1 if number == 9: persons[index] = False counter += 1 number =0 index += 1 if index ==30: index =0 for persons in persons: print('女' if persons else '男',end='') # 三元条件算法,一共30人,15男15女,围着圈,数到9的死,最后只剩15女