超详细解决困扰人的python典例:“有n个人围成一圈”式n里挑一

2023-10-27

引语

记录学习路程,抛砖引玉。如有更好的算法或者出现错误,欢迎指点。

题目

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几位。

案例实现

为方便大家理解,我详细说明一些函数的引用。如果觉得没必要,直接跳到最后代码页即可。
以下是我解题思路(假设有6个人):

  1. 建立列表former,然后把1~6六个元素添加到列表former中(用了range函数和append函数)
  2. 把former列表的第一个元素赋值给later然后移除(用了pop函数)
  3. 起一个变量count来判断每次移除的首元素是否整除3,如果不整除就重新给回给列表former(用了append函数,实现了围成一圈的首尾相连),如果整除的话就让他滚蛋退圈
  4. 最后判断列表former长度为1(即其剩下一个元素)时,打印列表former元素(最后剩下的元素是1)
    在这里插入图片描述
former = [] 
count = 0 
for i in range(1,7): 
    former.append(i)
while True: 
    if len(former) == 1: 
        break
    else: 
        count += 1 
        later = former[0] 
        former.pop(0) 
        if count == 3: 
            count = 0 
            continue 
        else: 
            former.append(later) 
print(former) 
"""
[1]
"""

range()函数

对于 range() 函数,有几个注意点:
(1)它表示的是左闭右开区间;
(2)它接收的参数必须是整数,可以是负数,但不能是浮点数等其它类型;
(3)它是不可变的序列类型,可以进行判断元素、查找元素、切片等操作,但不能修改元素;
(4)它是可迭代对象,却不是迭代器。

a=list(range(6))#默认从0开始
b=list(range(1,6))#左闭右开没有6
c=list(range(1,15,2))#左闭右开没有15,2为等差
print(a)
print(b)
print(c)
"""
[0, 1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 3, 5, 7, 9, 11, 13]
"""

为什么上面6个人案例的代码是range(1,7)呢~现在是不是茅塞顿开了呢^^

append()函数

在处理这个案例上运用这个函数实现了在数组列表后添加上相应的元素

c=list(range(1,15,2))
print(c)
c.append(19)
print(c)
"""
[1, 3, 5, 7, 9, 11, 13]
[1, 3, 5, 7, 9, 11, 13, 19]
"""

pop()函数

是的没错,最后介绍的就是移除,也是灭掉这个案例的大招。小例题如下,自己细品。

a1=list(range(6))
b1=list(range(1,6))
c1=list(range(1,15,2))
print(a1)
a=a1.pop(5)
print(a)
print(a1)
print("***************")
print(b1)
b=b1.pop(0)
print(b)
print(b1)
print("***************")
print(c1)
c=c1.pop(3)
print(c)
print(c1)

执行结果如下:

[0, 1, 2, 3, 4, 5]
5
[0, 1, 2, 3, 4]
***************
[1, 2, 3, 4, 5]
1
[2, 3, 4, 5]
***************
[1, 3, 5, 7, 9, 11, 13]
7
[1, 3, 5, 9, 11, 13]

完整代码

说了一大堆,其实也就是几行代码而已…

n = int(input("请输入有几个人围圈:"))
former = [] # 创个空列表
count = 0 #用来计数
for i in range(1,n+1): #把元素1~n顺序放入列表,再提一次,左闭右开所以是n+1
    former.append(i)
while True: 
    if len(former) == 1: # 如果列表的长度为1,结束收工
        break
    else: 
        count += 1 # 记数加1
        later = former[0] #取出列表当中的第一个元素,并赋值给later
        former.pop(0) #移除列表当中的第一个元素
        if count == 3: # 整除3的话续列没你份,赶紧滚蛋
            count = 0 
            continue 
        else: 
            former.append(later) #把不整除3的续入列表former后面
print("最后剩下的是第",former,"位") # 最后打印出剩余的那个仔

运行结果如下(假设有100人围圈):

请输入有几个人围圈:100
最后剩下的是第 [91]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超详细解决困扰人的python典例:“有n个人围成一圈”式n里挑一 的相关文章

  • 如何把父母和孩子联系起来?

    有两个简单的类 一个只有parent属性 并且两者兼而有之parent and children属性 这意味着同时具备两者的人parent and children继承自唯一的parent 这是只有parent属性 我们就这样称呼它吧Chi
  • 在函数内的 for 循环上使用 tqdm 来检查进度

    我正在使用 for 循环迭代目录树内的一大组文件 这样做时 我想通过控制台中的进度条来监视进度 因此 我决定使用 tqdm 来实现此目的 目前 我的代码如下所示 for dirPath subdirList fileList in tqdm
  • GUI 测试工具 PyUseCase 与 Dogtail 相比如何?

    GUI测试工具如何Py用例 http pypi python org pypi PyUseCase重命名为故事文本 http pypi python org pypi StoryText 相比于Dogtail http en wikiped
  • 如何同时运行多个功能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下代码 my func1 my func2 my func3 my func4 my func5 是否可以同时计算函数的数据 而
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • Python,Google Places API - 给定一组纬度/经度查找附近的地点

    我有一个由商店 ID 及其纬度 经度组成的数据框 我想迭代该数据框 并使用 google api 为每个商店 ID 查找附近的关键地点 例如输入 Store ID LAT LON 1 1 222 2 222 2 2 334 4 555 3
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 我可以用关闭的文件对象做什么?

    当您打开文件时 它存储在一个打开的文件对象中 该对象使您可以访问该文件的各种方法 例如读取或写入 gt gt gt f open file0 gt gt gt f
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • Eclipse/PyDev 中未使用导入警告,尽管已使用

    我正在我的文件中导入一个绘图包 如下所示 import matplotlib pyplot as plt 稍后我会在我的代码中成功使用此导入 fig plt figure figsize 16 10 然而 Eclipse 告诉我 未使用的导
  • 如何从邻接表高效创建稀疏邻接矩阵?

    我正在与last fm http labrosa ee columbia edu millionsong lastfm数据集来自百万歌曲数据集 http labrosa ee columbia edu millionsong 数据以一组 j
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • 将 Django 中的所有视图限制为经过身份验证的用户

    我是 Django 新手 我正在开发一个项目 该项目有一个登录页面作为其索引和一个注册页面 其余页面都必须仅限于登录用户 如果未经身份验证的用户尝试访问这些页面 则必须将他 她重定向到登录页面 我看到 login required装饰器会将
  • AWS 将 MQTT 消息存储到 DynamoDB

    我构建了一个定期发送 MQTT 消息的 python 脚本 这是发送到后端的 JSON 字符串 Id 1234 Ut 1488395951 Temp 22 86 Rh 48 24 在后端 我想将 MQTT 消息存储到 DynamoDB 表中
  • 为什么从 openAI 导入 Universe 模块时出现“无效语法”错误

    当我导入时universe来自 openAI 的模块 我收到以下错误 Traceback most recent call last File
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip

随机推荐

  • Spring Boot集成OpenLdap 进行权限验证

    一 搭建openldap 搭建openldap可以有多种方式进行 1 可以去官网下载源码包 自行编译 安装 2 可以使用docker进行安装 这边主要介绍使用docker安装openldap 参考文章 https blog csdn net
  • FastSpeech2论文中文翻译

    FastSpeech2 论文的翻译 翻译的挺差的 大概是那意思 只翻译了摘要 模型部分和实验部分 摘要 高级的TTS模型像fastspeech 能够显著更快地合成语音相较于之前的自回归模型 而且质量相当 FastSpeech模型的训练依赖于
  • Linux下libxml库编程(-)

    http leansmall blog 163 com blog static 51617691200811171530183 1 编写说明 本文档主要介绍XML的基本知识及如何利用libxml来操作xml文件 2 XML基础 XML是eX
  • Telegram死循环(已解决)

    简介 Telegram 中文叫做电报 作为一款安全的 轻量级的即时通讯软件 是我们在进行国际通信 与外国友人或者身处外地的游子的一种通讯选择 但是这个软件有一个 BUG 就是如果我们之前已经在一台设备上登陆过自己的账号 那么如果再次登录的时
  • 23.8.16.git clone -b branchName http://xx.xx.x.x.xx.git解析

    git clone 表示使用git克隆远程仓库代码 b 这是branch的简写 代表分支的意思 branchName 代表远程仓库的分支名 也就是要克隆的指定分支名 http xx xx x x xx git 这是远程仓库的url地址
  • Vue3 -- 自定义指令directive

    目录 自定义指令directive 局部自定义指令 全局自定义指令 自定义指令动态参数 函数简写 传参给自定义指令 总结 自定义指令directive 在Vue中除了像v model 和 v show这样的默认内置的指令外 Vue 也允许注
  • go语言实战-----27-----mysql增删改查、预处理、事务、第三方库sqlx

    一 mysql增删改查 Mysql准备工作 首先我们建库建表 以方便进行测试 运行下面sql文件 CREATE DATABASE IF NOT EXISTS go test use go test CREATE TABLE user id
  • 2022年广东省中职组“网络空间安全”赛题及赛题解析(超详细)

    2022年广东省中职组 网络空间安全 赛项模块B解析 2022年中职组广东省区竞赛任务书 模块 B 基础设施设置与安全加固 1000分 B 1 Apache安全配置 B 2 隐写术应用 B 3 Python程序渗透 B 4 代码渗透测试 B
  • Pandas 之 过滤DateFrame中所有小于0的值并替换

    Outline 前几天 数据清洗时有用到pandas去过滤大量数据中的 负值 把过滤出来的 负值 替换为 NaN 或者指定的值 故做个小记录 读取CSV文件 代码 import pandas as pd import numpy as np
  • 万能指针:void * 指针

    背景 最近看到void 类型的指针不知道该怎么处理 特别学习一下 适用语言 C C 当中都可以使用 但就目前认知水平 C当中用的较为普遍一些 void 指针的机制 指针从某种程度上来说 无非就是一个地址 它的类型只是用于说明数据结构的 指针
  • RISC-V指令集是一种精简的、可编程的指令集,它主要用于实现各种复杂的数据处理与控制任务。它提供了一系列简单的、可编程的指令,可以用来实现复杂的操作,比如addi指令,它可以将一个常数(如0x1)加...

    RISC V指令集是一种精简可编程的指令集 可以用来实现复杂的数据处理和控制操作 它提供了一系列简单可编程的指令 例如addi指令 它可以将一个常数加到寄存器中 并将结果存储到另一个寄存器中 从而实现特定的操作
  • 小白学Linux之#pragma的用法

    预编译指令 pragma的用法 最近在看开源项目中的代码时 发现许多地方都用到了 pragma的程序 因此 就问了下谷歌老师 总结了下 pragma预编译指令的常用用法 现在和大家分享下 一 pragma最常用的方法 1 progma pa
  • 【Node】package.json文件

    package json 文件详解前言一 package json 文件作用二 package json 文件创建三 package json 文件示例四 package json 文件配置说明 五 项目依赖 六 开发依赖 七 Node j
  • 【Linux】工具(5)——gdb

    今天我们来到Linux工具的最后一篇博客 gdb的使用 目录 一 Linux下的release和debug 二 gdb常用指令选项 一 Linux下的release和debug 我们先来写一个Makfile 来方便我们编译代码 再来写一个t
  • C# 中的多线程和异步编程

    目录 前言 1 并发 并行 异步 同步 的概念 区别以及使用场景 1 并发和并行 2 同步和异步 3 何时使用多线程编程 何时使用异步编程 2 基础知识 1 简介及概念 1 1Join 和 Sleep 1 2线程是如何工作的 1 3线程 v
  • MySql事务和存储引擎

    目录 一 MySQL 事物 1 事务的概念 2 事务的ACID特点 2 1 1 原子性 2 1 2 一致性 2 1 3 隔离性 2 1 4 Mysql 及事物隔离级别 查询全局事务隔离级别 查询会话事务隔离级别 设置全局事务隔离级别 设置会
  • DRF---序列化组件

    目录 序列化器Serializer 序列化组件基本使用 使用序列化类 序列化多条数据 使用序列化类 序列化单条数据 反序列化 新增 修改 新增 视图类 序列化类 视图类 序列化类 序列化类的常见字段类和常见参数 常用字段类型 选项参数 通用
  • 【Linux线程同步】生产者消费者模型

    文章目录 1 peach 线程互斥中可能还会存在的问题 peach 2 peach 线程同步 peach 2 1 apple 同步概念与竞态条件 apple 2 2 apple 条件变量函数 apple lemon 初始化 lemon le
  • Qt5.15源码编译详解

    1 请先参考 https blog csdn net weixin 60395515 article details 127284046 spm 1001 2014 3001 5501 2 有以下几个不同的地方需要修改 Qt5的mkspec
  • 超详细解决困扰人的python典例:“有n个人围成一圈”式n里挑一

    自学python No 2 引语 题目 案例实现 range 函数 append 函数 pop 函数 完整代码 引语 记录学习路程 抛砖引玉 如有更好的算法或者出现错误 欢迎指点 题目 有n个人围成一圈 顺序排号 从第一个人开始报数 从1到