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()函数将分割出的数字进行映射成整数