python基础训练 day23

python基础训练 day23,第1张

python基础训练 day23 python基础训练 day23

小白打卡第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

今日打卡结束,

无了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5658283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存