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):
    """
    求函数x的阶乘
    :param x: 任意正整数
    :return: x的阶乘
    """
    y = 1
    for z in range(1, x + 1):
        y *= z
    return y

if __name__ == ‘__main__‘:
    m = int(input(‘m = ‘))
    n = int(input(‘n = ‘))
    # 当需要计算阶乘的时候,不用再写循环,而是直接调用已经定义好的函数就可以了。
    print(f(m) // f(n) // f(m - n))

#  Craps 游戏改进版

from random import randint

def roll_dice(n=2):
    total = 0
    for _ in range(n):
        total += randint(1, 6)
    return total

# 改名字,选中要修改的名字,按中shift + F6
from random import randint
money = 1000
while money >0:
    print(‘玩家总资产:%d‘ % money)
    while True:
        debt = int(input(‘清下注:‘))
        if 0 < debt <= money:
            break
    go_on = False

    print(‘玩家摇出了%d‘ % roll_dice())
    if roll_dice() == 7 or roll_dice() == 11:
        print(‘玩家胜‘)
        money += debt
    elif roll_dice() == 2 or roll_dice() == 3 or roll_dice() == 12:
        print(‘玩家输‘)
        money -= debt
    else:
        go_on = True
    while go_on:
        roll_dice()
        print(‘玩家摇出了%d‘ % roll_dice())
        if roll_dice() == roll_dice():
            print(‘玩家胜!‘)
            money += debt
            go_on = False
        elif roll_dice() == 7:
            print(‘玩家输!‘)
            money -= debt
            go_on = False
print(‘你已经破产!‘)

#  判断质数

from math import sqrt
def is_prime(num):

    for factor in range(2,int(sqrt(num)) + 1):
        if num  % factor == 0:
            return False
    return num !=1 and True or False
 # 通过下面的if条件,可以在导入模块时不去执行下面的代码。
# ctrl + 鼠标左键 可以查找解释定义。

if __name__ == ‘__main__‘:
    num = int(input(‘请输入一个数判断是不是质数:‘))
    print(is_prime(num))

# 最小公倍数和最大公约数

def lcm(x, y):
    # if x > y:
    #     (x, y) = (y, x)
    ‘‘‘
    求最小公倍数
    :param x: 任意正整数
    :param y: 任意正整数
    :return: x和y的最小公倍数
    ‘‘‘
    (x, y) = (y, x) if x > y else (x, y)
    for i in range(y, x * y + 1):
        if i % x == 0 and i % y == 0:
            return i

def gcd(x, y):
    # if x > y:
    #     (x, y) = (y, x)
    #文档注释
    """
    计算最大公约数
    :param x: 任意正整数
    :param y: 任意正整数
    :return: 最大公约数
    """
    #
    (x, y) = (y, x) if x > y else (x, y)
    i = x
    while i > 0:
        if x % i ==0 and y % i == 0: # range(x, 0, -1) 从大到小。
            return i
        i -= 1

if __name__ == ‘__main__‘:
    x = int(input(‘请输入第一个数x=‘))
    y = int(input(‘请输入第二个数y=‘))
    print(‘最小公倍数:‘, lcm(x,y))
    print(‘最大公约数:‘, gcd(x, y))

# 判断回文质数

from math import sqrt
def is_prime(num):

    for factor in range(2,int(sqrt(num)) + 1):
        if num  % factor == 0:
            return False
    return num !=1 and True or False
def is_palindrome(num):
    ‘‘‘
    判断是不是回文数
    :param num: 非负整数
    :return: 是回文数返回True,不是回文数返回Flase.
    ‘‘‘
    temp = num
    total = 0
    while temp > 0:
        total = total * 10 + temp % 10
        temp //= 10
    return num == total
#and和or运算符都是带短路功能的运算符
#如果and左边的表达式是Flase,那么右边的表达式被短路
#如果or左边的表达式是True,那么右边的表达式被短路
#所以左右两边的表达式放置的顺序可能会对执行效率产生明显的影响。
if __name__ == "__main__":
    num = int(input(‘请输入一个数:‘))
    print(is_palindrome(num))
    if is_palindrome(num) and prime_number(num):
        print(‘%是回文质数‘ % num)
    else:
        print(‘%f不是回文质数‘ % num)

# 21根火柴的游戏,谁拿到最后一根,谁就输。每次拿的范围[1,4].保证计算机获胜。

def game_match():
    total = 21
    while True:
        my_number = int(input(‘请输入你拿的火柴数:‘))
        if 1 <= my_number <= 4:
            com_number = 5 - my_number
            total -= 5
            print(‘电脑拿完还有多少根‘, total)
        if total == 1:
            print(‘你输了‘)
            break
        else:
            print(‘请输入正确的火柴数!‘)

if __name__ == ‘__main__‘:
    game_match()

# 21根火柴游戏公平版

from random import randint

def main():
    total = 21
    while total > 0:
        print(‘还剩下%d根火柴‘ % total)
        while True:
            num = int(input(‘请输入你要拿的火柴数:‘))
            if 1 <= num <= 4 and num <= total:
                break
        total -= num
        print(‘你拿完之后还剩%d‘ % total)
        if total > 0:
            com = randint(1,min(4,total))
            print(‘电脑拿了%d根火柴‘ % com)
            total -= com
            if total == 0:
                print(‘电脑拿走了最后一根火柴,电脑输了!‘)
                break
        if total == 0:
            print(‘你拿走了最后一根火柴,你输了1‘)

if __name__ == ‘__main__‘:
    main()

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

时间: 2024-11-06 07:11:09

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

Python第二周习题集(二)

# 约瑟夫环问题 def main(): """ 约瑟夫环问题, :return: 基督徒和非基督徒站的顺序. """ persons = [True] * 30 # 30个人活着,用True表示. counter = 0 # 死的人. index = 0 # 下标 number = 0 # 报数 while counter < 15: # 死的人小于15继续进行 if persons[index]: # 活着的人报数 number +=

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第二周基本图形绘制

#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的内置数据结构之一.字符串是多个字符组成的序列,因此支持序列的相关操作. 支持的操作有: 1. 通过索引来访问 >>> s = 'this is a test string' >>> len(s)  #len()函数可以得到字符串的长度 21 得到字符串的长度以后,就可以根据索引来访问字符串的内容. >>>s[0]   #正向索引 't' >>>s[-1]  #反

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,模块

Python第二周总结

补充上期str后缀小魔法: .swapcase() 将字符串大小写互转,小变大,大变小 a = ("HEllO") v = a.swapcase() print(v) .isnumeric() 判断是否为数字,支持汉字,范围广 a = "一②三4" v = a.isnumeric() print(v) #True .isprinttable() 检测变量中是否有无法显示的字符,如\n\t存在则返回False a = "hello \t" prin