Python经典练习题(一)

2023-09-22 14:18:28

🍀第一题

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

解法二:
使用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。

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)

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


🍀第三题

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

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

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

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)

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

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

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

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

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

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

🍀第五题

输出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()  

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

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

请添加图片描述

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

更多推荐

企业微信-通用开发参数回调设置

公司业务需要开发企业微信,注册三方服务商审核通过后,开始配置开发信息。本篇中记录在调试url验证中遇到错误及解决方式。目录准备工作下载php加解密库下载文件说明设置白名单设置路径参数说明设置ip回调处理回调类型:1、Get类型2、Post类型Get回调实现设置路由控制器业务层处理配置开发信息遇到问题发现问题解决方案准备

学习路之工具--SecureCRT的下载、安装

百度盘:链接:https://pan.baidu.com/s/1r3HjEj053cKys54DTqLM4A?pwd=gcac提取码:gcac复制这段内容后打开百度网盘手机App,操作更方便哦感谢大佬简单介绍下SecureCRTSecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windo

小米云原生文件存储平台化实践:支撑 AI 训练、大模型、容器平台多项业务

小米作为全球知名的科技巨头公司,已经在数百款产品中广泛应用了AI技术,这些产品包括手机、电视、智能音箱、儿童手表和翻译机等。这些AI应用主要都是通过小米的深度学习训练平台完成的。在训练平台的存储方案中,小米曾尝试了多种不同的存储方式,包括Ceph+NFS、HDFS和对象存储挂载等。然而,这些不同的存储方式导致了数据冗余

SpringCloud Gateway搭建Gateway 微服务应用实例

😀前言本篇博文是关于SpringCloudGateway搭建Gateway微服务应用实例,希望你能够喜欢🏠个人主页:晨犀主页🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰如果文章有什么需要改进

Linux系统命令——通过端口确认进程及路径方法

一、端口概念在网络技术中,端口(port)大致有两种意思:一是物理意义上的端口比如,ADSLModem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的

软件测试缺陷报告详解

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告SoftwareBugReport(SBR)或软件问题报告SoftwareProblemReport(SPR)作用:缺陷报告是软件测试人员的工作成果之

若依使用及源码解析(前后端分离版)

部署环境JDK>=1.8MYSQL>=5.7Maven>=3.0Node>=12Redis>=3运行若依项目下载若依源码若依官网若依项目源码(前后端分离)运行后端项目ruoyi-ui就是vue项目(这里使用vscode打开)整体用idea打开1.配置数据库(sql提供sql文件中的sql脚本配置)创建数据库ruoyi_

Web安全与攻防

Web安全概述在Internet大众化及Web技术飞速演变的今天,在线安全所面临的挑战日益严峻。伴随着在线信息和服务的可用性的提升,以及基于Web的攻击和破坏的增长,安全风险达到了前所未有的高度。Web安全可以从以下三个方面进行考虑:Web服务器的安全、Web客户端的安全、Web通信信道的安全。针对Web服务器的攻击可

从HTTP到HTTPS:网站安全通信的演进之路

HTTP协议与TCP/IP协议族内的其他协议相同部分,用于客户端和服务器端的通信。下面来看一下HTTP具体是怎么工作的。1、HTTP前生今世在HHTP/0.9版本,主要是通过确立了客户端请求、服务器端响应的通信流程来解决HTML文件传输,只能获取文本资源。HTTP/1.0是一个简单的文本协议,通过设立头部字段来解决不同

5.2 磁盘CRC32完整性检测

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法,校验算法可以通过计算应用与数据的循环冗余校验(CRC)检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测,并以此来判定特定程序内存是否发生了变化,如果发生变化则拒绝执行,通过此种方法来保护内存或磁盘文件不

二十一、MySQL(多表)内连接、外连接、自连接实现

1、多表查询(1)基础概念:(2)多表查询的分类:2、内连接(1)基础概念:(2)隐式内连接:基础语法:select表1.name,表2.namefrom表1,表2where表1.外键=表2.被链接的字段;实际操作:#(1)查询每一个员工的姓名,以及关联的部门名称--隐式查询selectemp.name,course.

热文推荐