Python练习——约瑟夫环问题、用类方法描述一个数字时钟

大兔子大兔子 提交于 2019-12-03 07:02:38

一、约瑟夫环问题

有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将其中15个人扔到海里面去,有个人想了个办法就是大家围成一个圈,由某个人开始从1报数,报到9的人就扔到海里面,他后面的人接着从1开始报数,报到9的人继续扔到海里面,直到扔掉15个人。由于上帝的保佑,15个基督徒都幸免于难,问这些人最开始是怎么站的,哪些位置是基督徒哪些位置是非基督徒。
def main():
    persons=[True]*30   #创建一个列表,元素全部为True,即假定30个人全为基督徒
    count,i,number=0,0,0
    while count<15:     #记数,非基督徒有15人
        if persons[i]:
            number+=1   #遍历列表元素
            if number==9:   #第9个人
                persons[i]=False    #将该列表元素改为False,即非基督徒
                count+=1
                number=0
        i+=1    #从下一个人开始数
        i%=30
    for person in persons:
        print('基'if person else '非',end='')
main()

 

二、用类方法描述一个数字时钟

from time import sleep
import os
class Clock(object):
    def __init__(self,hour=0,minute=0,second=0):#初始化方法
        self.hour=hour
        self.minute=minute
        self.second=second
    def run(self):  #走字
        self.second+=1
        if self.second==60:
            self.second=0
            self.minute+=1
            if self.minute==60:
                self.minute=0
                self.hour+=1
                if self.hour==24:
                    self.hour=0
    def show(self): #显示
        print("{}时{}分{}秒".format(self.hour,self.minute,self.second))
def main():
    clock=Clock(12,23,56)
    while True:
        clock.show()
        sleep(1)
        clock.run()
        os.system("cls")    #清屏
main()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!