趣味Python100例初学者练习01

1. 1 抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:4位的车号刚好是一个整数的平方。
请根据以上线索求出车号。

if __name__ == '__main__':for i in range(10):  # 牌照的前两位数字for j in range(10):  # 牌照的后两位数字if i != j:  # 前两位不同x = 1000 * i + 100 * i + 10 * j + jfor m in range(31, 100):  # 4位的车号刚好是一个整数的平方if m * m == x:print("车牌号为:", x)

1.2 兔子产子

有一对兔子,从出生后的第3个月起每个月都生一对兔子。小免子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问n个月内每个月的兔子总对数为多少?

if __name__ == '__main__':rb1 = 1  # 第一个月的兔子对数rb2 = 1  # 第二个月的兔子对数n = int(input("请输入您查询月份:"))if n <= 2:print(f"前 {n} 个月的兔子总对数为 1 对")else:for i in range(3, n + 1):  # 从第3个月开始计算sum_rb = rb1 + rb2rb2 = rb1rb1 = sum_rbprint(f'{n} 个月后兔子总对数为:{sum_rb}')

 1.3 牛顿选代法求方程根

编写用牛顿迭代法求方程根的函数。方程为ax^3+bx^2+cx+d=0,系数a、b、c、d由主函数输入,求x在1附近的一个实根。求出根后,由主函数输出。

def newton_method(a, b, c, d, x0, tol=1e-6, max_iter=100):"""牛顿迭代法求解方程 ax^3 + bx^2 + cx + d = 0 的根:param a: 三次项系数:param b: 二次项系数:param c: 一次项系数:param d: 常数项:param x0: 初始猜测值:param tol: 容差,默认 1e-6:param max_iter: 最大迭代次数,默认 100:return: 求得的实根"""def f(x):return a * x ** 3 + b * x ** 2 + c * x + d  # 定义方程 f(x)def f_prime(x):return 3 * a * x ** 2 + 2 * b * x + c  # 定义导数 f'(x)x = x0  # 初始猜测值for i in range(max_iter):fx = f(x)fpx = f_prime(x)if abs(fx) < tol:  # 如果 f(x) 接近 0,则认为找到了根return xif fpx == 0:  # 如果导数为 0,无法继续迭代raise ValueError("导数为 0,无法继续迭代")x = x - fx / fpx  # 牛顿迭代公式return x  # 返回最终的近似根if __name__ == '__main__':# 输入方程的系数a = float(input("请输入系数 a: "))b = float(input("请输入系数 b: "))c = float(input("请输入系数 c: "))d = float(input("请输入系数 d: "))# 初始猜测值为 1 附近的点x0 = 1.0# 调用牛顿迭代法求解try:root = newton_method(a, b, c, d, x0)print(f"方程的一个实根为: {root:.6f}")except ValueError as e:print(e)

1.4 百钱百鸡

中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只? 

if __name__ == '__main__':for x in range(20):for y in range(33):for z in range(100):if 5 * x + 3 * y + (z / 3 == 100):if x + y + z == 100:print(x, y, z)

 1.5 借书方案知多少

小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

if __name__ == '__main__':total = 0for a in range(1, 6):for b in range(1, 6):for c in range(1, 6):if a != b and b != c and a != c:total += 1print(f"{a},{b},{c}")print(f"{total}种")

1.6 打鱼还是晒网

中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起便开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。 

def is_leap_year(year):"""判断某一年是否为闰年:param year: 年份:return: True 是闰年,False 不是闰年"""return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)def days_from_1990(year, month, day):"""计算从 1990 年 1 月 1 日到给定日期的总天数:param year: 目标年份:param month: 目标月份:param day: 目标日期:return: 总天数"""# 每个月的天数month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]total_days = 0# 计算 1990 年到目标年份之间的天数for y in range(1990, year):total_days += 366 if is_leap_year(y) else 365# 计算目标年份中 1 月到目标月份之间的天数for m in range(1, month):total_days += month_days[m - 1]if m == 2 and is_leap_year(year):  # 闰年 2 月多一天total_days += 1# 加上目标日期的天数total_days += day - 1  # 减去 1,因为 1990 年 1 月 1 日是第 1 天return total_daysdef fishing_or_drying(year, month, day):"""判断某一天是“打鱼”还是“晒网”:param year: 目标年份:param month: 目标月份:param day: 目标日期:return: "打鱼" 或 "晒网""""total_days = days_from_1990(year, month, day)remainder = total_days % 5  # 5 天为一个周期if remainder < 3:  # 余数为 0、1、2 表示“打鱼”return "打鱼"else:  # 余数为 3、4 表示“晒网”return "晒网"if __name__ == '__main__':# 输入目标日期year = int(input("请输入年份: "))month = int(input("请输入月份: "))day = int(input("请输入日期: "))total_days = days_from_1990(year,month,day)# 判断是“打鱼”还是“晒网”result = fishing_or_drying(year, month, day)print(f"{year}年{month}月{day}日,这一天相差{total_days}天,这一天在{result}。")

1.7 最佳存款方案 

假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后5年中的每年年底取出1000元,到第5年时刚好取完,请算出他存钱时应存入多少。

if __name__ == '__main__':m = 0.0063money = 0.0for i in range(1,6):money = (money + 1000) / (1 + m * 12)print(f"存钱时应存入{money}")

 

 1.8 冒泡排序

对N个整数(数据由键盘输入)进行升序排列。

if __name__ == '__main__':# 获取用户输入并去除首尾的空白字符x = input().strip()# 以空白字符为分隔符将输入字符串分割成多个字符串,再把这些字符串转换为整数,形成列表a = list(map(int, x.split()))# 获取列表的长度n = len(a)# 冒泡排序for i in range(n):for j in range(0, n - i - 1):if a[j] > a[j + 1]:# 交换相邻元素的位置a[j], a[j + 1] = a[j + 1], a[j]print(a)

 

 1.9 折半查找

N个有序整数数列已放在一维数组中,利用二分查找法查找整数m在数组中的位置。若找到,则输出其下标值;反之,则输出“Not be found!"

def binary_search(arr, m):# 初始化左右指针left, right = 0, len(arr) - 1while left <= right:# 计算中间元素的索引mid = (left + right) // 2if arr[mid] == m:# 找到目标值,返回其下标return midelif arr[mid] < m:# 目标值在右半区间,更新左指针left = mid + 1else:# 目标值在左半区间,更新右指针right = mid - 1# 未找到目标值return -1if __name__ == "__main__":# 从键盘输入有序整数数列,以空格分隔input_str = input("请输入有序整数数列(以空格分隔):").strip()arr = list(map(int, input_str.split()))# 从键盘输入要查找的整数m = int(input("请输入要查找的整数 m:"))# 调用二分查找函数result = binary_search(arr, m)if result != -1:print(f"整数 {m} 在数组中的下标是:{result}")else:print("Not be found!")

1.10 数制转换 

给定一个M进制的数x,实现对x向任意一个非M进制的数的转换。 

def m_to_decimal(x, m):"""将 M 进制的数 x 转换为十进制数:param x: M 进制的数,字符串类型:param m: M 进制:return: 十进制数"""decimal_num = 0power = len(x) - 1for digit in x:if digit.isdigit():value = int(digit)else:# 处理字母表示的数字,如 A 表示 10,B 表示 11 等value = ord(digit.upper()) - ord('A') + 10decimal_num += value * (m ** power)power -= 1return decimal_numdef decimal_to_n(decimal_num, n):"""将十进制数转换为 N 进制的数:param decimal_num: 十进制数:param n: 目标进制:return: N 进制的数,字符串类型"""if decimal_num == 0:return '0'result = ''while decimal_num > 0:remainder = decimal_num % nif remainder < 10:result = str(remainder) + resultelse:# 处理大于 9 的余数,用字母表示result = chr(ord('A') + remainder - 10) + resultdecimal_num //= nreturn resultdef convert_number(x, m, n):"""将 M 进制的数 x 转换为 N 进制的数:param x: M 进制的数,字符串类型:param m: M 进制:param n: 目标进制:return: N 进制的数,字符串类型"""# 先将 M 进制的数转换为十进制数decimal_num = m_to_decimal(x, m)# 再将十进制数转换为 N 进制的数return decimal_to_n(decimal_num, n)# 示例使用
if __name__ == "__main__":x = input("请输入 M 进制的数: ")m = int(input("请输入当前进制 M: "))n = int(input("请输入目标进制 N: "))result = convert_number(x, m, n)print(f"{m} 进制的数 {x} 转换为 {n} 进制的数是: {result}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12151.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-我的学习成长之路

因为热爱&#xff0c;无畏山海

蓝桥杯备考:高精度算法之除法

我们除法的高精度其实也不完全是高精度&#xff0c;而是一个高精度作被除数除以一个低精度 模拟我们的小学除法 由于题目中我们的除数最大是1e9&#xff0c;当它真正是1e9的时候&#xff0c;t是有可能超过1e9的&#xff0c;所以要用long long

Maven jar 包下载失败问题处理

Maven jar 包下载失败问题处理 1.配置好国内的Maven源2.重新下载3. 其他问题 1.配置好国内的Maven源 打开⾃⼰的 Idea 检测 Maven 的配置是否正确&#xff0c;正确的配置如下图所示&#xff1a; 检查项⼀共有两个&#xff1a; 确认右边的两个勾已经选中&#xff0c;如果没有请…

【前端】ES6模块化

文章目录 1. 模块化概述1.1 什么是模块化?1.2 为什么需要模块化? 2. 有哪些模块化规范3. CommonJs3.1 导出数据3.2 导入数据3.3 扩展理解3.4 在浏览器端运行 4.ES6模块化4.1 浏览器运行4.2 在node服务端运行4.3 导出4.3.1 分别导出4.3.2 统一导出4.3.3 默认导出4.3.4 混用 4.…

强化学习笔记(5)——PPO

PPO视频课程来源 首先理解采样期望的转换 变量x在p(x)分布下&#xff0c;函数f(x)的期望 等于f(x)乘以对应出现概率p(x)的累加 经过转换后变成 x在q(x)分布下&#xff0c;f(x)*p(x)/q(x) 的期望。 起因是&#xff1a;求最大化回报的期望&#xff0c;所以对ceta求梯度 具体举例…

20-30 五子棋游戏

20-分析五子棋的实现思路_哔哩哔哩_bilibili20-分析五子棋的实现思路是一次性学会 Canvas 动画绘图&#xff08;核心精讲50个案例&#xff09;2023最新教程的第21集视频&#xff0c;该合集共计53集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https:…

【HTML入门】Sublime Text 4与 Phpstorm

文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域&#xff0c…

Kubernetes学习之包管理工具(Helm)

一、基础知识 1.如果我们需要开发微服务架构的应用&#xff0c;组成应用的服务可能很多&#xff0c;使用原始的组织和管理方式就会非常臃肿和繁琐以及较难管理&#xff0c;此时我们需要一个更高层次的工具将这些配置组织起来。 2.helm架构&#xff1a; chart:一个应用的信息集合…

Kamailio 不通过 dmq 实现注册复制功能

春节期间找到一篇文章&#xff0c;需要 fg 才能看到&#xff1a; https://medium.com/tumalevich/kamailio-registration-replication-without-dmq-65e225f9a8a7 kamailio1 192.168.56.115 kamailio2 192.168.56.116 kamailio3 192.168.56.117 route[HANDLE_REPLICATION] {i…

grpc 和 http 的区别---二进制vsJSON编码

gRPC 和 HTTP 是两种广泛使用的通信协议&#xff0c;各自适用于不同的场景。以下是它们的详细对比与优势分析&#xff1a; 一、核心特性对比 特性gRPCHTTP协议基础基于 HTTP/2基于 HTTP/1.1 或 HTTP/2数据格式默认使用 Protobuf&#xff08;二进制&#xff09;通常使用 JSON/…

Intel 与 Yocto 项目的深度融合:全面解析与平台对比

在嵌入式 Linux 领域&#xff0c;Yocto 项目已成为构建定制化 Linux 发行版的事实标准&#xff0c;广泛应用于不同架构的 SoC 平台。Intel 作为 x86 架构的领导者&#xff0c;在 Yocto 生态中投入了大量资源&#xff0c;为其嵌入式处理器、FPGA 和 AI 加速硬件提供了完整的支持…

kubernetes(二)

文章目录 NamespacePodLabelDeploymentService Namespace 在Kubernetes系统中&#xff0c;Namespace是一种至关重要的资源类型&#xff0c;其主要功能在于实现多套环境的资源隔离或者多租户的资源隔离&#xff0c;默认情况下所有的Pod都能够相互访问&#xff0c;但如果不想让两…

巧妙利用数据结构优化部门查询

目录 一、出现的问题 部门树接口超时 二、问题分析 源代码分析 三、解决方案 具体实现思路 四、优化的效果 一、出现的问题 部门树接口超时 无论是在A项目还是在B项目中&#xff0c;都存在类似的页面&#xff0c;其实就是一个部门列表或者叫组织列表。 从页面的展示形式…

【数据分析】案例04:豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask)

豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask) 豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:实现豆瓣电影Top250详情的数据分析与Web网页可视化。电脑系统:Windows使用软件:PyCharm、NavicatPython版本:Python 3.…

【线程】基于环形队列的生产者消费者模型

1 环形队列 环形队列采用数组来模拟&#xff0c;用取模运算来模拟环状特性。 1.如何判断环形队列为空或者为满? 当环形队列为空时&#xff0c;头和尾都指向同一个位置。当环形队列为满时&#xff0c;头和尾也都指向同一个位置。 因此&#xff0c; 可以通过加计数器或者标记…

Vue指令v-html

目录 一、Vue中的v-html指令是什么&#xff1f;二、v-html指令与v-text指令的区别&#xff1f; 一、Vue中的v-html指令是什么&#xff1f; v-html指令的作用是&#xff1a;设置元素的innerHTML&#xff0c;内容中有html结构会被解析为标签。 二、v-html指令与v-text指令的区别…

OPENGLPG第九版学习 - 着色器基础

文章目录 2.1 着色器与OpenGL2.2 0penGL的可编程管线2.3 OpenGL着色语言GLSL概述2.3.1 使用GLSL构建着色器变量的声明变量的作用域变量的初始化构造函数 、 类型转换聚合类型访问向量和矩阵中的元素结构体数组多维数组 2.3.2 存储限制符const 存储限制符in 存储限制符out 存储限…

路径规划之启发式算法之二十九:鸽群算法(Pigeon-inspired Optimization, PIO)

鸽群算法(Pigeon-inspired Optimization, PIO)是一种基于自然界中鸽子群体行为的智能优化算法,由Duan等人于2014年提出。该算法模拟了鸽子在飞行过程中利用地标、太阳和磁场等导航机制的行为,具有简单、高效和易于实现的特点,适用于解决连续优化问题。 更多的仿生群体算法…

Docker Compose的使用

文章首发于我的博客&#xff1a;https://blog.liuzijian.com/post/docker-compose.html 目录 Docker Compose是什么Docker Compose安装Docker Compose文件Docker Compose常用命令案例&#xff1a;部署WordPress博客系统 Docker Compose是什么 Docker Compose是Docker官方的开源…

AP单类平均准确率

P_true N_true P_pred TP Fp N_pred FN TNP NTP&#xff08;真正样本&#xff0c;与真实框IoU大于阈值的框&#xff09; FP&#xff08;假正样本&#xff0c;与真实框IoU小于阈值的框&#xff09; TN&#xff08;真负样本&#xff0c;背景&#xff09;…