一、约瑟夫环问题
有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()