Python第二周习题集(二)

# 约瑟夫环问题

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 False

def 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, randint
def 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_balls
def main():
    """
    注数,及返回值
    :return: 多少注的双色球随机数
    """
    n = int(input(‘机选几注:‘))
    for _ in range(n):
        display(random_select())
if __name__ == ‘__main__‘:
    main()

# 时钟

from time import sleep
import time
from text import timerLocal

class 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 sleep
from time import time

class 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, randrange

class 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 False

def 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 sqrt

class 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 time
from time import sleep

def 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()

原文地址:https://www.cnblogs.com/zl666/p/8538312.html

时间: 2024-11-06 07:29:54

Python第二周习题集(二)的相关文章

Python第二周习题集(一)

# 排列组合c(n,m) m = int(input('m = ')) n = int(input('n = ')) fm = 1 for num in range(1, m + 1): fm *= num fn = 1 for num in range(1, n + 1): fn *= num fmn = 1 for num in range(1, m - n + 1): fmn *= num print(fm // fn // fmn) def f(x): """ 求函数

python第二周基本图形绘制

#pythonDraw.py(python蟒蛇) import turtle #调用turtle(海龟)库 turtle.setup(650,350,200,200)#(width,height,startx,starty)确定长宽和窗体打开的位置,后面两个可省略,默认为屏幕中央. turtle.penup() #提起画笔,海龟在飞行,不会在画布上留下痕迹 turtle.fd(-250) #移动到-250位置 turtle.pendown() #放下画笔,海龟在爬行 turtle.pensize

python第二周 数字类型

数字类型 Python中,数字并不是一个真正的对象类型,而是一组类似类型的分类.Python不仅支持通常的数字类型(整数和浮点数),而且能够通过常量去直接创建数字以及处理数字的表达式,还通过模块和第三方库提供更多的数字类型支持.Python数字类型的完整工具包括: 整数和浮点数 复数(需要模块支持) 固定精度的十进制数 有理分数 集合 布尔类型 无穷的整数精度 各种数字内置函数和模块 处理数字对象的工具: 表达式操作符:+.-.*././/.>>.**.& 内置数学函数:pow.abs

Python第二周之字符串,列表,元组,集合,字典

# 字符串 1.定义:str类型的,是字符串.例如: var1 = 'Hello world!' 2.使用: 1.增:+ 2.查:index(str), find(str), in 字符串的常用方法 def main(): print(help(''.isalnum)) str1 = 'hello, world' print(len(str1)) print(str1.capitalize()) print(str1.upper()) print(str1) print(str1.find('o

python第二周 字符串

字符串是一个有序的字符的集合,用来存储和表现基于文本的信息,python的内置数据结构之一.字符串是多个字符组成的序列,因此支持序列的相关操作. 支持的操作有: 1. 通过索引来访问 >>> s = 'this is a test string' >>> len(s)  #len()函数可以得到字符串的长度 21 得到字符串的长度以后,就可以根据索引来访问字符串的内容. >>>s[0]   #正向索引 't' >>>s[-1]  #反

中国mooc北京理工大学机器学习第二周(二):回归

一.线性回归(Liner Regression) 利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的统计方法. 线性回归是用最小平方函数对一个或多个自变量和因变量之间进行建模. 导入和使用比较简单. from sklearn import linear_model linear = linear_model.LinearRegression() linear.fit(datasets_X, datasets_Y) 预测房屋价格. import matplotlib.pypl

Python第二周之函数及其作用域

# 函数 定义: 我们可以把程序中相对独立的功能模块抽取出来,这样的好处是可以减少重复代码的编写,将来可以重复使用这些功能模块,Python中的函数就是代表了这样的功能模块. 命名: age_of_student(官方) 或 ageOfStudent(大部分人的习惯用法,又称驼峰命名法) 调用: import 模块 (as 别名) 函数名(参数) 注意:二元运算符之间放空格,参数里赋值时,等号两边不加空格.例如:def f(x=2) #y = x !定义求阶乘这个函数,将求阶乘这个功能抽取出来,

Python第二周之面向对象

# 面向对象 类名,每个单词首字母大写 类,属性和行为都要有! 类的定义: 1.类是对象的蓝图和模板,有了类就可以创建对象 2.定义类需要做两件事情:数据抽象和行为抽象 3.数据抽象:抽取对象共同的静态特征(找名词)- 属性 4,行为抽象:抽取对象共同的动态特征(找动词)- 方法 定义类的关键字- color-类名(每个单词首字母大写) class Student(object): # Python3 中的规范写法 # 构造方法(构造器/构造子)constructor # 调用该方法的时候不是直

python第二周。2019.4.13

1, 我绘制大蟒蛇就是..保存也对着呢,你要是打开文件的话,先闪个黑屏,再闪个白屏..自动退出,然后啥都没了. 我觉得是我代码编错了...再来一遍! 这次到可以,但是这个大蟒蛇好像没有回头... 刚才错了一个括号... 2, turtle 是个图形库,就是叫做海龟库. 3, python语言的计算生态包括标准库和第三方库两种,其中python库就属于标准库. 标准库:随解释器直接安装到操作系统中的功能模块. 第三方库:需要经过安装才能使用的功能模块 另外,库library,包package,模块