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第二周习题集(二)

评论关闭