Python第二周习题集(二),,# 约瑟夫环问题de
Python第二周习题集(二),,# 约瑟夫环问题de
# 约瑟夫环问题
def main(): """ 约瑟夫环问题, :return: 基督徒和非基督徒站的顺序。 """ persons = [True] * 30 # 30个人活着,用True表示。 counter = 0 # 死的人。 index = 0 # 下标 number = 0 # 报数 while counter < 15: # 死的人小于15继续进行 if persons[index]: # 活着的人报数 number += 1 if number == 9: # 报数为9的人被杀死 persons[index] = False counter += 1 # 死的人加一 number = 0 # 重新报数 index += 1 # 下标一直增加, index %= 30 # 超过30开始循环,又回到0开始, for person in persons: # 在这些人中,死了的标记为非,没死的标记为基 print(‘基‘ if person else ‘非‘, end=‘‘)if __name__ == ‘__main__‘: main()
# list 的多重使用, 矩阵,棋盘。*****
def main(): names = [‘关羽‘, ‘张飞‘, ‘赵云‘, ‘马超‘, ‘貂蝉‘] subjects = [‘语文‘, ‘数学‘, ‘Python‘] table = [[0] * len(subjects) for _ in range(len(names))] # 创建一个5行3列的矩阵。 for row, name in enumerate(names): print(‘请输入%s的成绩:‘ % name) for col, subject in enumerate(subjects): score = int(input(‘%s:‘ % subject)) # 输入每个位置的值 table[row][col] = score # 将每个位置的值,填进去 print(table)if __name__ == ‘__main__‘: main()
# 说年月日,判断是这一年的第几天
def is_leap_year(y): """ 判断是不是闰年, :param y: 输入年份 :return: 闰年返回True, 否则返回False """ if y % 4 == 0 and y % 100 != 0 or y % 400 == 0: return True return Falsedef which_day(year, month, date): """计算传入的日期是这一年的第几天""" days_of_month = [ [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] ][is_leap_year(year)] # 调用上面的判断,True返回1, False返回0,以此来选择使用哪个列表。 total = 0 for index in range(month - 1): # 对于输入月之前的每个月,计算天数 total += days_of_month[index] return total + date # 加上当月的天数,就是这一年的第几天了。if __name__ == ‘__main__‘: print(which_day(2018,3,8))
# 杨辉三角
def triangles(): a = [1] while True: yield a a = [sum(i) for i in zip([0]+a, a+[0])]if __name__ == ‘__main__‘: n = 0 for t in triangles(): print(t) n = n+1 if n == 10: break
# 双色球选注
from random import randrange, randintdef display(balls): """ 美化输出球的页面 :param balls: 输入的列表 :return: 优化过的列表 """ for index, ball in enumerate(balls): if index == len(balls) - 1: print(‘|‘, end=‘ ‘) print(‘%02d‘ % ball, end=‘ ‘) print()def random_select(): """ 6个红球的随机数(1-33)和1个蓝球的随机数(1-16) :return: 6个红球和一个蓝球的随机组合 """ red_balls = list(range(1, 34)) select_balls = [] for _ in range(6): index = randrange(len(red_balls)) select_balls.append(red_balls[index]) del red_balls[index] select_balls.sort() select_balls.append(randint(1, 16)) return select_ballsdef main(): """ 注数,及返回值 :return: 多少注的双色球随机数 """ n = int(input(‘机选几注:‘)) for _ in range(n): display(random_select())if __name__ == ‘__main__‘: main()
# 时钟
from time import sleepimport timefrom text import timerLocalclass Timer(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 appear(self): return ‘%02d:%02d:%02d‘ % (self.hour, self.minute, self.second)def clock(): time1 = Timer() time1.hour = int(time.strftime(‘%H‘, time.localtime())) time1.minute = int(time.strftime(‘%M‘, time.localtime())) time1.second = int(time.strftime(‘%S‘, time.localtime())) while True: print(time1.appear()) sleep(1) time1.run()if __name__ == ‘__main__‘: clock()
# 分钟倒计时器
from time import sleepfrom time import timeclass Clock(object): def __init__(self, hour, minute, second): self.hour = hour self.minute = minute self.second = second def run(self): self.second -= 1 if self.second == 0: if self.minute > 0: self.minute -= 1 self.second = 60 elif self.minute == 0: print(‘时间到!‘) return False return True def appear(self): print(‘%02d:%02d:%02d‘ % (self.hour, self.minute, self.second))def main(): clock = Clock(0, 0, 10) is_go_on = True while is_go_on: clock.appear() sleep(1) is_go_on = clock.run()if __name__ == ‘__main__‘: main()
# 猜拳
from random import randint, randrangeclass Guess_number(object): def __init__(self, answer): self.answer = answer def compare(self, my_number): if my_number > self.answer: print(‘小一点!‘) return True if my_number < self.answer: print(‘大一点!‘) return True if my_number == self.answer: print(‘恭喜你猜对了!‘) return Falsedef main(): answer = randrange(int(input(‘请输入你要猜的范围:‘))) is_go_on = True while is_go_on: me = Guess_number(answer) my_number = int(input(‘请输入你要猜的数:‘)) is_go_on = me.compare(my_number)if __name__ == ‘__main__‘: main()
# # 描述平面上的一个点,方法:移动这个点,1.移动到某个地方,2.移动多少 3. 移动了多少距离。
from math import sqrtclass Point(object): def __init__(self, x=0, y=0): self._x = x self._y = y def move_by(self, dx, dy): self._x += dx self._y += dy return self._x, self._y def move_to(self, x, y): self._x = x self._y = y return self._x, self._y def distance_to(self, other): dx = self._x - other._x dy = self._x - other._y return sqrt(dx**2 + dy**2)def main(): point = Point() P1 = Point(5, 6) print(point.move_by(1, 1)) print(point.move_to(2, 4)) print(point.distance_to(P1))if __name__ == ‘__main__‘: main()
# 取本地时间
import timefrom time import sleepdef timerLocal(): while True: sleep(1) minute = time.strftime(‘%M‘, time.localtime()) second = time.strftime(‘%S‘, time.localtime()) hour = time.strftime(‘%H‘, time.localtime()) print(‘%s:%s:%s‘ %(hour, minute, second))if __name__ == ‘__main__‘: timerLocal()
Python第二周习题集(二)
相关内容
- python--异常处理,,一、格式 :try.
- 从零开始学Python-day1,,一、Linux系统的
- selenium+python 爬取网络图片(2) -- 百度,,上一篇博文介绍
- CentOS 5.5 x64下安装升级Python3.3,,1、下载linux版
- 每日一题_Python.利用gevent和pipeline快速导出近千万Redis字
- python面试1-30题,,1、一行代码实现1-
- python-老王开枪,, 1 __auth
- python--logging模块,,一、简介 pyth
- Python—time模块介绍,,time 模块在平常
- python - print,,http://blo
评论关闭