Python经典练习题(一)

文章目录

🍀第一题

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

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

解法一:

循环套循环

python 复制代码
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, "个满足条件的三位数")

解法二:

使用Python内置的库

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, "个满足条件的三位数")

🍀第二题

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

听起来,这题像一个数学题哈,或许在你家孩子的奥数班会看得到

具体讲解如下:


我们有两个等式:

复制代码
x + 100 = m^2
x + 100 + 168 = n^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。

python 复制代码
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)

运行结果如下


🍀第三题

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

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

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

python 复制代码
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)

运行结果如下


🍀第四题

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

这里我们使用两个解法

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

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

python 复制代码
_list = [1, 2, 3, 4, 5]
copied_list = _list[:] 
_list[0] = 10  # 独立
print(_list)  
print(copied_list)   

运行结果如下

方法二:使用list()构造函数

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

python 复制代码
_list = [1, 2, 3, 4, 5]
copied_list = list(_list)  
_list[0] = 10
print(_list) 
print(copied_list)  

运行结果如下

🍀第五题

输出9*9乘法表

python 复制代码
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j} x {i} = {i * j}", end="\t")
    print()  

运行结果如下

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

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

相关推荐
小二·2 分钟前
Python Web 开发进阶实战:全链路测试体系 —— Pytest + Playwright + Vitest 构建高可靠交付流水线
前端·python·pytest
皇族崛起3 分钟前
【视觉多模态】基于视觉AI的人物轨迹生成方案
人工智能·python·计算机视觉·图文多模态·视觉多模态
HealthScience4 分钟前
常见的微调的方式有哪些?(Lora...)
vscode·python
nimadan127 分钟前
**免费有声书配音软件2025推荐,高拟真度AI配音与多场景
人工智能·python
精神小伙就是猛11 分钟前
C# Task/ThreadPool async/await对比Golang GMP
开发语言·golang·c#
可触的未来,发芽的智生15 分钟前
完全原生态思考:从零学习的本质探索→刻石头
javascript·人工智能·python·神经网络·程序人生
叫我:松哥16 分钟前
基于Flask+ECharts+Bootstrap构建的微博智能数据分析大屏
人工智能·python·信息可视化·数据分析·flask·bootstrap·echarts
办公自动化软件定制化开发python18 分钟前
基于PyQt5开发的文件智能查找工具,开源思路+完整实现,解决办公文件检索痛点
开发语言·qt
工程师00718 分钟前
C#状态机
开发语言·c#·状态模式·状态机
Pyeako26 分钟前
Opencv计算机视觉--边界填充&图像形态学
人工智能·python·opencv·计算机视觉·pycharm·图像形态学·边缘填充