小白打卡第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
今日打卡结束,
无了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)