• Python经典练习题(一)


    🍀第一题

    有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

    这里我们使用两种方法进行求解

    解法一:
    循环套循环

    count = 0
    for i in range(1, 5):
        for j in range(1, 5):
            for k in range(1, 5):
                if(i!=j) and (i!=k) and (j!=k):
                    count += 1
                    print('{0}-{1}-{2}'.format(i, j, k))
    print("总共有", count, "个满足条件的三位数")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    解法二:
    使用Python内置的库

    from itertools import permutations
    
    digits = [1, 2, 3, 4]
    count = 0  # 计数器,用于统计满足条件的三位数的数量
    
    # 生成所有由1、2、3、4组成的三位数的排列组合
    permuted_numbers = permutations(digits, 3)
    
    for perm in permuted_numbers:
        count += 1
        print(perm[0], perm[1], perm[2])
    
    print("总共有", count, "个满足条件的三位数")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    🍀第二题

    一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    听起来,这题像一个数学题哈,或许在你家孩子的奥数班会看得到
    具体讲解如下:


    我们有两个等式:

    x + 100 = m^2
    x + 100 + 168 = n^2
    
    • 1
    • 2

    首先,将第二个等式中的 x + 100 替换为 m^2,得到:

    m^2 + 168 = n^2

    现在,我们想找到两个整数 n 和 m,它们的乘积等于 168,同时它们之间的差为多少。这个问题等价于解一个二次方程:

    (n + m)(n - m) = 168

    这里,(n + m) 和 (n - m) 分别表示两个整数的和与差。我们希望找到这两个整数的和与差,其中差为 2(n - m = 2)。

    为什么差是 2 呢?因为我们要找到两个完全平方数之间的差是 168,而 168 = 14 * 12。所以,如果我们让 (n + m) = 14,(n - m) = 12,那么乘积就是 168。这就是为什么 n - m = 2。

    因此,当 (n + m) = 14,(n - m) = 12 时,我们可以解出 n 和 m 的值:

    (n + m) = 14
    (n - m) = 12

    解这个方程组,得到:

    n = 13
    m = 1

    这样,我们就找到了 n 和 m 的值,而 x = m^2 - 100 = 1^2 - 100 = -99。所以,满足条件的整数 x 是 -99。

    for m in range(1, 169):
        if 168 % m == 0:
            n = 168 // m
            if n > m and (n - m) % 2 == 0:
                x = (n ** 2) - 100
                print("符合条件的整数 x 是:", x)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行结果如下
    在这里插入图片描述


    🍀第三题

    判断某年某月某日是一年的第几天

    本题在编写之前,我们要明确哪个月份多少天,以及这个年份是不是闰年,所以这里我们创建了两个函数,一个用于判断是否是闰年,一个进行天数的计算

    这里的天数计算采用列表切片的形式

    def is_leap_year(year):
        """
        判断是否是闰年的函数
        """
        return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
    
    def day_of_year(year, month, day):
        """
        计算某年某月某日是这一年的第几天的函数
        """
        days_in_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
        if is_leap_year(year):
            days_in_month[2] = 29  # 闰年2月有29天
    
        if month < 1 or month > 12 or day < 1 or day > days_in_month[month]:
            return "输入日期无效"
    
        day_count = sum(days_in_month[:month]) + day
        return day_count
    
    # 输入年月日
    year = int(input("请输入年份:"))
    month = int(input("请输入月份:"))
    day = int(input("请输入日期:"))
    
    result = day_of_year(year, month, day)
    if type(result) == int:
        print(f"{year}{month}{day}日是这一年的第{result}天")
    else:
        print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    运行结果如下
    在这里插入图片描述


    🍀第四题

    将一个列表的数据复制到另一个列表中

    这里我们使用两个解法

    方法一:使用切片操作(Slicing)

    切片操作是一种简单且直接的方法,用于复制一个列表到另一个列表。它创建了原始列表的一个浅拷贝,这意味着两个列表之间的元素是独立的,但如果列表中包含其他可变对象(如列表中的列表),则这些可变对象在两个列表中仍然是共享的。

    _list = [1, 2, 3, 4, 5]
    copied_list = _list[:] 
    _list[0] = 10  # 独立
    print(_list)  
    print(copied_list)   
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行结果如下
    在这里插入图片描述
    方法二:使用list()构造函数

    另一种方法是使用内置的 list() 构造函数来创建一个新列表,这也会创建原始列表的一个浅拷贝。

    _list = [1, 2, 3, 4, 5]
    copied_list = list(_list)  
    _list[0] = 10
    print(_list) 
    print(copied_list)  
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行结果如下
    在这里插入图片描述

    🍀第五题

    输出9*9乘法表

    for i in range(1, 10):
        for j in range(1, i + 1):
            print(f"{j} x {i} = {i * j}", end="\t")
        print()  
    
    • 1
    • 2
    • 3
    • 4

    运行结果如下
    在这里插入图片描述

    这题耳熟能详的了,就不过多解释了

    请添加图片描述

    挑战与创造都是很痛苦的,但是很充实。

  • 相关阅读:
    QGIS编译(跨平台编译):第三方库编译
    Plato Farm有望通过Elephant Swap,进一步向外拓展生态
    看DevExtreme如何用HTML/Markdown编辑器轻松设置多行工具栏
    Softing WireXpert 500产品荣获2023布线安装和维护创新奖
    深度学习人脸表情识别算法 - opencv python 机器视觉 计算机竞赛
    代码随想录算法训练营15期 Day 3 | 203.移除链表元素 、707.设计链表 、206.反转链表
    车间调度|基于遗传算法的柔性车间调度(Matlab代码实现)
    python diffusers StableDiffusionXLPipeline 离线使用
    【Git】git commit -m 提交信息约束规范
    计算机网络
  • 原文地址:https://blog.csdn.net/null18/article/details/133168153