类型转换、整除运算、下标取值
bags = ['a', 'b', 'c', 'd']
# bags[int('3')//11] 求值为 a
idx = int('3') // 11
print(bags[idx])
# bags[-1] 求值为 d
print(bags[-1])
# bags[-2] 求值为 c
print(bags[-2])
列表元素获得下标、尾插元素、删除元素
bacon = [1.15, 'dog', 13, 'cat', True]
# bacon.index('cat') 求值为 3
print(bacon.index('cat'))
# bacon.append(99) 列表变化:末尾添加了一个元素是整数 99
print(f'变化前:{bacon}')
bacon.append(99)
print(f'变化后:{bacon}')
# bacon.remove('cat') 列表变化:删除了 'cat' 元素,其后的元素紧贴前面的元素
print(f'变化前:{bacon}')
bacon.remove('cat')
print(f'变化后:{bacon}')
列表输出长度+增删改
li = ['ethan', 'zoran', 'jim']
# a 计算列表长度并输出
print(f'列表长度为:{len(li)}')
# b 列表追加元素 'lucky' 并输出添加后的列表
print(f'添加前:{li}')
li.append('lucky')
print(f'添加后:{li}')
li = ['ethan', 'zoran', 'jim']
# c 列表第一个位置插入元素 'Tony' 输出添加后的列表
print(f'插入前:{li}')
li.insert(0, 'Tony')
print(f'插入后:{li}')
li = ['ethan', 'zoran', 'jim']
# d 修改第二个元素为 'Kelly' 输出修改后的列表
print(f'修改前:{li}')
li[1] = 'Kelly'
print(f'修改后:{li}')
li = ['ethan', 'zoran', 'jim']
# e 删除列表元素 'ethan' 输出删除后的列表
print(f'删除前:{li}')
li.remove('ethan')
print(f'删除后:{li}')
li = ['ethan', 'zoran', 'jim']
# f 删除列表第二个元素 输出删除后的列表
print(f'删除前:{li}')
li.remove(li[1])
print(f'删除后:{li}')
查询 20 首次出现的索引位置 使用遍历方式完成
方法一:while 循环
nums = [10, 20, 30, 50, 70, 20]
# 查询 20 首次出现的索引位置 使用遍历方式完成
idx = 0
length = len(nums)
while idx < length:
if nums[idx] == 20:
print(f'20首次出现的索引位置是:{idx}')
break
idx += 1
方法二:for 循环
nums = [10, 20, 30, 50, 70, 20]
# 查询 20 首次出现的索引位置 使用遍历方式完成
for i, num in enumerate(nums):
if num == 20:
print(f'20首次出现的索引位置是:{i}')
break
依次打印出里面所有人名
names = ['曹操', '刘备', '关羽', '张飞', '小乔', '诸葛亮']
# 依次打印出里面所有人名
for n in names:
print(n)
通过代码转为列表 li = [‘张飞’, ‘刘备’, ‘关羽’, ‘曹操’, ‘典韦’, ‘司马懿’]
要求
二维列表转为一维列表
names = [['张飞', '刘备', '关羽'], ['曹操', '典韦', '司马懿']]
转换为
li = ['张飞', '刘备', '关羽', '曹操', '典韦', '司马懿']
方法一:双 for 循环
names = [['张飞', '刘备', '关羽'], ['曹操', '典韦', '司马懿']]
li = []
for i in range(len(names)):
for j in range(len(names[i])):
li.append(names[i][j])
print(f'转换后:{li}')
方法二:单 for 循环
names = [['张飞', '刘备', '关羽'], ['曹操', '典韦', '司马懿']]
li = []
for subName in names:
li.extend(subName)
print(f'转换后:{li}')
3个店铺 6个商品 6个商品随机分配到3个店铺
分析
6 个商品随机分配到 3 个店铺,可能有店铺没有商品
代码
方法一:random.choice() 函数
import random
shopList = []
goodsList = ['小米', '苹果', 'vivo', '华为', 'oppo', 'lenovo']
tmp = []
while len(goodsList) > 0:
choice = random.choice(goodsList)
tmp.append(choice)
goodsList.remove(choice)
if len(tmp) == 2:
shopList.append(tmp)
tmp = []
print(shopList)
方法二:random.randint() 函数
import random
shopList = [[], [], []]
goodsList = ['小米', '苹果', 'vivo', '华为', 'oppo', 'lenovo']
for goods in goodsList:
shopList[random.randint(0, 2)].append(goods)
pass
print(shopList)
求1234四个数字能生成多少个 互不相同 且 无重复数字的三位数
思路
三层 for 循环,1234四个数字存入一个列表
从列表里取一个数当百位,再取一个数当十位(如果十位和百位相同,则重新取一个数当十位),然后取一个数当个位(如果个位和 百位/十位 相同,则重新取一个数当个位),然后计数加一
代码
nums = [1, 2, 3, 4]
cnt = 0
for hundred in nums:
for ten in nums:
if ten == hundred:
continue
for data in nums:
if data == hundred or data == ten:
continue
cnt += 1
print(f'number: {hundred * 100 + ten * 10 + data}, times: {cnt}')
输入的四位数 1234 返回翻转后的结果 4321
# 输入的四位数 1234 返回翻转后的结果 4321
nums = 1234
reverseNums = 0
while nums > 0:
reverseNums = reverseNums * 10 + nums % 10
nums //= 10
pass
print(reverseNums)
计数255、找全是255行数、删除全是255所在行
nums = [
[255, 255, 255, 255],
[255, 255, 255, 255],
[0, 255, 0, 255]
]
# 多少个值是 255
cnt = 0
for i, li in enumerate(nums):
cnt += li.count(255)
pass
print(cnt)
# 找出全是 255 的行数
for i, li in enumerate(nums):
if li.count(255) == len(li):
print(i, end=' ')
pass
print()
# 删除全是 255 的所在行
tmpNums = []
for i, li in enumerate(nums):
if li.count(255) != len(li):
tmpNums.append(li)
pass
print(tmpNums)
输出所有名字
# 输出所有名字
names = [
[
['张飞1', '刘备1', '关羽1'],
['曹操1', '典韦1', '司马懿1']
],
[
['张飞2', '刘备2', '关羽2'],
['曹操2', '典韦2', '司马懿2']]
]
for ul in names:
for li in ul:
for subName in li:
print(subName, end=' ')
pass
计算面馆销售额
要求
键盘录入:每天卖出多少碗面
键盘录入:每碗面多少块
键盘录入:今年共营业多少天
计算且输出一年的总销售额
代码
cnt = int(input('每天卖出多少碗面:'))
price = float(input('每碗面多少块:'))
days = int(input('今年共营业多少天: '))
income = cnt * price * days
print(f'一年总销售额是{income}')
求解 1-100 能被 3 整除的所有数字的和
# 求解 1-100 能被 3 整除的所有数字的和
total = 0
for num in range(1, 101):
if num % 3 == 0:
total += num
print(f'1-100 能被 3 整除的数有: {num}')
print(f'1-100 能被 3 整除的所有数字的和是: {total}')
求解 1-100 能被 3 和 5 同时整除的所有数字的和
# 求解 1-100 能被 3 和 5 同时整除的所有数字的和
total = 0
for num in range(1, 101):
if num % 3 == 0 and num % 5 == 0:
total += num
print(f'1-100 能被 3 和 5 同时整除的数有: {num}')
print(f'1-100 能被 3 和 5 同时整除的所有数字的和是: {total}')
使用 while 输出以下*图形1
# 使用 while 输出以下图形
'''
*
**
***
****
*****
'''
cnt = 1
while cnt < 6:
print(cnt * '*')
cnt += 1
使用 while 输出以下图形2
# 使用 while 输出以下图形
'''
*****
****
***
**
*
'''
cnt = 5
while cnt > 0:
print(cnt * '*')
cnt -= 1
嵌套 for 循环实现打印九九乘法表
# 嵌套 for 循环实现打印九九乘法表
for x in range(1, 10):
for y in range(1, x + 1):
print(f'{x} * {y} = {x * y}', end=' ')
print()