《Python程序设计》

python编程题

  1. 给定一个年份,判断这一年是不是闰年。

def is_leap_year(year): 

    if year % 4 != 0: 

        return False 

    elif year % 100 != 0: 

        return True 

    elif year % 400 != 0: 

        return False 

    else: 

        return True 

 

# 测试函数 

year = int(input("请输入一个年份: ")) 

if is_leap_year(year): 

    print(f"{year} 是闰年") 

else: 

    print(f"{year} 不是闰年")

  1. 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式   输入仅包含两行,每行描述一个矩形。   在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。 输出格式   输出仅包含一个实数,为交的面积,保留到小数后两位。

def calculate_intersection_area(rect1, rect2): 

    # 提取矩形的坐标 

    x1, y1, x2, y2 = rect1 

    x3, y3, x4, y4 = rect2 

 

    # 计算交集的坐标 

    # 交集在x轴上的范围 

    x_start = max(x1, x3) 

    x_end = min(x2, x4) 

    # 交集在y轴上的范围 

    y_start = max(y1, y3) 

    y_end = min(y2, y4) 

 

    # 检查是否有交集 

    if x_start < x_end and y_start < y_end: 

        # 计算交集面积 

        intersection_area = (x_end - x_start) * (y_end - y_start) 

        return round(intersection_area, 2) 

    else: 

        # 没有交集 

        return 0.0 

 

# 读取输入 

rect1_input = input().split() 

rect1 = (float(rect1_input[0]), float(rect1_input[1]), float(rect1_input[2]), float(rect1_input[3])) 

 

rect2_input = input().split() 

rect2 = (float(rect2_input[0]), float(rect2_input[1]), float(rect2_input[2]), float(rect2_input[3])) 

 

# 计算并输出交集面积 

intersection_area = calculate_intersection_area(rect1, rect2) 

print(intersection_area)

  1. 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。

def solveNQueens(n): 

    # 初始化棋盘 

    board = [['.' for _ in range(n)] for _ in range(n)] 

    # 记录每行、每列和两个对角线上是否有皇后的集合 

    rows, cols, diag1, diag2 = set(), set(), set(), set() 

    # 记录不能放置皇后的位置 

    forbidden = set() 

    # 记录黑皇后和白皇后的数量 

    black_queens, white_queens = 0, 0 

 

    def can_place(row, col): 

        # 检查是否有皇后在同一行、同一列或对角线上 

        return ( 

            row not in rows and 

            col not in cols and 

            row - col not in diag1 and 

            row + col not in diag2 

        ) 

 

    def place_queen(row, color): 

        nonlocal black_queens, white_queens 

        # 尝试在当前行的每一列放置皇后 

        for col in range(n): 

            if (row, col) not in forbidden and can_place(row, col): 

                # 标记该位置有皇后 

                board[row][col] = 'B' if color == 'black' else 'W' 

                rows.add(row) 

                cols.add(col) 

                diag1.add(row - col) 

                diag2.add(row + col) 

                 

                # 递归放置下一个皇后 

                if color == 'black': 

                    if row < n - 1: 

                        place_queen(row + 1, 'black') 

                    else: 

                        black_queens += 1 

                        place_queen(0, 'white') 

                else: 

                    if row < n - 1: 

                        place_queen(row + 1, 'white') 

                    else: 

                        white_queens += 1 

                        # 如果所有皇后都放置完毕,则增加总方案数 

                        if black_queens == n and white_queens == n: 

                            nonlocal total_solutions 

                            total_solutions += 1 

 

                # 回溯,撤销放置皇后的操作 

                board[row][col] = '.' 

                rows.remove(row) 

                cols.remove(col) 

                diag1.remove(row - col) 

                diag2.remove(row + col) 

 

    # 记录总方案数 

    total_solutions = 0 

    # 开始放置黑皇后 

    place_queen(0, 'black') 

     

    # 返回总方案数 

    return total_solutions 

 

# 测试代码 

n = 4  # 更改 n 的值来测试不同的棋盘大小 

print(f"Total solutions for {n}x{n} board: {solveNQueens(n)}")

  1. 某公司有一台打印机,需要将购买成本分年均摊到隔年的费用中。请编写一个程序,根据用户输入的购买金额和预计使用年限计算每年的分摊费用。要求对输入异常进行适当的处理(输入错误、被零除)。另外,当计算得到每年的分摊费用大于100时,抛出InvalidNumberError,并进行处理。
  2. 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4种情况之一:

1:两个字符串长度不等。比如 Beijing 和 Hebei

2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing

3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing

4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing

def compare_strings(s1, s2): 

    # 检查两个字符串长度是否相等 

    if len(s1) != len(s2): 

        return "两个字符串长度不等" 

     

    # 检查两个字符串是否完全相同(区分大小写) 

    if s1 == s2: 

        return "两个字符串不仅长度相等,而且相应位置上的字符完全一致" 

     

    # 检查两个字符串是否在不区分大小写的情况下相同 

    if s1.lower() == s2.lower(): 

        return "两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致" 

     

    # 如果以上条件都不满足,则它们既不相同也不满足不区分大小写的相同 

    return "两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致"

print(compare_strings(str1, str2))

  1. 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。 于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。 他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。 然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1米), 乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒, 不想通过手工计算推测出比赛的结果,于是他找到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序, 对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。

程序的基本逻辑:

初始化兔子和乌龟的位置为0。

每一秒,更新兔子和乌龟的位置。

检查兔子是否领先乌龟t米或以上,如果是,则兔子休息s秒。

当任何一个参赛者到达终点时,停止模拟并输出比赛结果。

def race_simulation(v1, v2, t, s, l): 

    rabbit_position = 0  # 兔子的位置 

    tortoise_position = 0  # 乌龟的位置 

    time_elapsed = 0  # 经过的时间 

    rabbit_resting = False  # 兔子是否在休息  

 

    while True: 

        # 如果兔子没有在休息,则更新兔子的位置 

        if not rabbit_resting: 

            rabbit_position += v1 

 

        # 更新乌龟的位置 

        tortoise_position += v2 

 

        # 检查兔子是否领先乌龟t米或以上,如果是,则兔子开始休息 

        if rabbit_position - tortoise_position >= t and not rabbit_resting: 

            rabbit_resting = True 

            print(f"兔子在第{time_elapsed+1}秒领先乌龟{t}米以上,开始休息{s}秒") 

             

        # 如果兔子已经休息完s秒,则兔子继续赛跑 

        if rabbit_resting and time_elapsed % s == s - 1: 

            rabbit_resting = False 

 

        # 检查是否有参赛者到达终点 

        if rabbit_position >= l: 

            return "兔子获胜" 

        elif tortoise_position >= l: 

            return "乌龟获胜" 

 

        # 增加时间 

        time_elapsed += 1 

 

# 调用函数并打印结果 

result = race_simulation(v1, v2, t, s, l) 

print(f"比赛结果为:{result}")

  1. 实现用户输入用户名和密码,当用户名为 admin且 密码为 123 时,显示登陆成功,否则登陆失败!

# 用户预设的用户名和密码 

preset_username = "admin" 

preset_password = "123" 

 

# 获取用户输入的用户名和密码 

username = input("请输入用户名: ") 

password = input("请输入密码: ") 

 

# 检查用户名和密码是否匹配预设值 

if username == preset_username and password == preset_password: 

    print("登陆成功") 

el

相关推荐

  1. Python程序设计

    2024-06-10 08:50:03       13 阅读
  2. Python程序设计 深浅拷贝

    2024-06-10 08:50:03       30 阅读
  3. Python程序设计 魔法函数

    2024-06-10 08:50:03       14 阅读
  4. Python程序设计 时间处理

    2024-06-10 08:50:03       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 08:50:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 08:50:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 08:50:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 08:50:03       20 阅读

热门阅读

  1. 解决win10 下xd不能拖动图片的问题

    2024-06-10 08:50:03       8 阅读
  2. 【设计模式】创建型设计模式之 原型模式

    2024-06-10 08:50:03       8 阅读
  3. 数据库漫谈-MongoDB

    2024-06-10 08:50:03       10 阅读
  4. Linux C/C++ 进程控制

    2024-06-10 08:50:03       8 阅读
  5. 使用Kotlin编写一个Http服务器

    2024-06-10 08:50:03       10 阅读
  6. Python怎么编辑前端:深度探索与实践

    2024-06-10 08:50:03       11 阅读
  7. Oracle和Random Oracle

    2024-06-10 08:50:03       10 阅读
  8. Next.js初始化和一些配置

    2024-06-10 08:50:03       8 阅读