小白打卡第23天!
题目来源
- python基础训练 day23
- 第一题(移项)
- 第二题(转圈)
# 有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数
新建一个列表,把旧的列表经过操作,放到新的列表中
def fun(m, n):
if m >= n:
print('error')
list0 = [int(input('请输入整数')) for i in range(n) ]
list1 = []
for i in range(n-m, n):
list1.append(list0[i])
for k in range(n-m):
list1.append(list0[k])
print(list1)
fun(2,5)
运行结果:
请输入整数1 请输入整数2 请输入整数3 请输入整数4 请输入整数5 [4, 5, 1, 2, 3]第二题(转圈)
# 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
直接上代码:
def fun(n):
list0 = []
for i in range(1, n+1): # 生成顺序数列
list0.append(i)
count = 0 # 用于标记3
flag = 0 # 用于索引
while True:
if list0[flag] != 0:
count += 1
if count == 3:
list0.remove(list0[flag])
count = 0
flag -= 1 # 因为数列变短1,所以索引减一
if flag == len(list0) - 1: # 因为是循环,所以索引到头时索引归零
flag = -1
if len(list0) == 1:
for j in list0:
if j != 0:
print(j)
break
flag += 1
fun(34)
fun(3)
鬼知道这个临界条件我弄了多久…
运行结果:
10 2 进程已结束,退出代码为 0
今日打卡结束,
无了



