【Python学习笔记:5】代码练习:类型转换+整除运算+循环+列表操作

类型转换、整除运算、下标取值

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭碗、碗碗香

感谢壮士的慷概解囊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值