博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 约瑟夫圈问题
阅读量:4316 次
发布时间:2019-06-06

本文共 1639 字,大约阅读时间需要 5 分钟。

  • 需求:有n个人围成一圈,顺序排号, 从第1个人开始报数(从1到3),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
  • 代码逻辑
    • n个人,通过输入参数n,生成一个长度为n的列表
    • 通过报数逻辑函数,只要数到3的就把那个位置相对应的列表值设置为0,同时留下的人数也要减1,直到剩下的人数为1,才退出循环
    • 通过报数逻辑函数,最后得到新的列表(只有一个值是1,其余都是0),进行循环即可
  • 代码如下:
    1 #coding:utf-8 2 #__author__ = 'Diva' 3 # 用户输入n,n代表人数,围成一圈,顺序排号 4 # 从第一个开始报数,1,2,3,数到3的人,退出圈子 5  6 # 报数逻辑,数到3的把对应的位置置为0,直到剩下最后一个人 7 def num_report(list_create): 8     n = 0 9     list_size = len(list_create)10     number_stay = list_size     # 剩下的人数(值为1的个数)11     while not number_stay == 1:12         for i in range(list_size):13             if list_create[i] == 1:14                 n = n + 115                 if n == 3:16                     list_create[i] = 017                     n = 018                     number_stay = number_stay - 119             if i == list_size:20                 i = 021 22 # 通过报数函数最后生成的新的列表,遍历,找到唯一一个值不是0的人23 def remove_num_3(list_create):24     num_report(list_create)25     print('经过报数逻辑最后得到的列表是:' + str(list_create))26     i = 027     while i < len(list_create):28         if list_create[i] == 1:29             print('最后剩下的编号是:' + str(i + 1))30             return True31         i = i + 132 33 # 根据用户输入的人数n,生成列表,同时执行移除动作34 def list_create_rm(n):35     try:36         if not n.isdigit():37             return False38     except ValueError as e:39         pass40 41     nn = int(n)42     i = 043     list_create = []44     while i < nn:45         list_create.append(1)46         i = i + 147     print('生成的列表是:' + str(list_create))48     remove_num_3(list_create)49 50 if __name__ == '__main__':51     n = raw_input('请输入人数:')52     list_create_rm(n)

     

  • 测试结果
  •  

转载于:https://www.cnblogs.com/divablogs/p/7511950.html

你可能感兴趣的文章
高级环境编程要看的
查看>>
【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)
查看>>
浙江大学PAT上机题解析之1009. Product of Polynomials (25)
查看>>
Amazon的Fire Phone之于Android开发者
查看>>
(网页)习惯了CS回车操作人员,操作BS网页表单也是回车666
查看>>
(网页)checkbox框变大变小
查看>>
(网页)jQueryAJAXtimeout超时问题详解(转)
查看>>
Mysql常用命令详解
查看>>
awk笔记
查看>>
jquery获取一组radio被选中项的值
查看>>
Python进阶之路---1.4python数据类型-数字
查看>>
架构师必备技能
查看>>
pgpool-II - 介绍
查看>>
[转载+原创]Emgu CV on C# (四) —— Emgu CV on 全局固定阈值二值化
查看>>
#leetcode刷题之路29- 两数相除
查看>>
bzoj千题计划216:bzoj1499: [NOI2005]瑰丽华尔兹
查看>>
CEYE平台的使用
查看>>
Alpha冲刺(10/10)——2019.5.2
查看>>
asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法...
查看>>
windows下键盘常用快捷键整理
查看>>