python综合练习题(二)

1.有40个人围成一圈,顺序排号。从第一个人开始报数(只报123这三个数),凡报到数字为3的人退出圈子,问最后留下的是原来第几号的那位。

# 创建一个包含40人的列表
people = list(range(1,41))

# 初始化计数器和索引
count = 0
index = 0

while len(people) > 1:
    # 每次报数,计数器加1
    count += 1

    # 如果报数到3,则移除当前的人
    if count == 3:
        people.pop(index) # 移除当前报数的人
        count = 0 # 重置计数器为0
    else:
        index += 1 # 如果计数器不等于3,继续下一个人

    if index >= len(people):# 如果索引超过了列表长度,重置索引为0,以实现循环报数
        index = 0

# 最后剩下的一个人即为答案,因为只剩下一个人了。
res = people[0]
print(res)

# 运行结果:28

 2.编写一个程序,提取以逗号分割的字符串中的所有数字,并将数字重新组合成一个数组;要求输入'34岁,67年,55岁,33岁,12日,98年'这一个字符串,提取出['34', '67', '55', '33', '12', '98'],注意数字用字符串来表示,结果保存到L2中;

import re 

input_string = '34岁,67年,55岁,33岁,12日,98年'

#使用正则表达式来提取数字
pattern = r'\d+' # 设置匹配模式:匹配一个或多个数字,\d表示匹配数字 +表示多个
#findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。
numbers = re.findall(pattern,input_string) 


# 将提取到的数字组合成一个数组
L2 = numbers

print(L2)

# 运行结果:['34', '67', '55', '33', '12', '98']

3.编写一个程序,根据给定的公式计算并打印值:Q=[(2∗C∗D)/H]。其中,假定C=50。H=30。D是一个变量,它的值应该以逗号分隔的序列输入到程序中。
要求输入:'100,150,180'这一字符串,依次按逗号分隔出每个数字,并带入公式中计算,计算结果保存到L3数组中【注意:计算出的数字用字符串表示】;

C = 50
H = 30

L3 = []

input_string = '100,150,180'

numbers = input_string.split(',')
for number in numbers:
    num = int(number)
    Q = int(((2*C*num)/H)**0.5)
    L3.append(str(Q))

print(L3)

# 运行结果:['18', '22', '24']

 4.编写一个程序,X,Y作为输入数值,根据两个数值会生成一个二维数组,**数组的第i行和第j列的元素值等于i×j**。注意:i和j都是从0开始计;  
要求输入'3, 5'这一字符串,则程序输出为:[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]];将二维数组转化为一维数组,保存到L4数组中;

input_str = '3,5'

# 使用map()函数将分割出的数字进行映射成整数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值