趣味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}")

相关文章:
趣味Python100例初学者练习01
1. 1 抓交通肇事犯 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前…...
postgresql的用户、数据库和表
在 PostgreSQL 中,用户、数据库和表是关系型数据库系统的基本组成部分。理解这些概念对数据库管理和操作至关重要。下面是对这些概念的详细解释: 1. 用户(User) 在 PostgreSQL 中,用户(也称为 角色&#…...
对游戏宣发的粗浅思考
1.两极分化 认真观摩了mgs系列制作人的x账号, 其更新频率吓死人,一天能发几十条之多,吓死人。大部分都是转发相关账号的ds2或mgs相关内容, 每日刻意的供给这些内容来满足几十万粉丝需求,维护热情。 幕后是专业的公…...
【Java基础-42.3】Java 基本数据类型与字符串之间的转换:深入理解数据类型的转换方法
在 Java 开发中,基本数据类型与字符串之间的转换是非常常见的操作。无论是从用户输入中读取数据,还是将数据输出到日志或界面,都需要进行数据类型与字符串之间的转换。本文将深入探讨 Java 中基本数据类型与字符串之间的转换方法,…...
(9) 上:学习与验证 linux 里的 epoll 对象里的 EPOLLIN、 EPOLLHUP 与 EPOLLRDHUP 的不同
(1)经过之前的学习。俺认为结论是这样的,因为三次握手到四次挥手,到 RST 报文,都是 tcp 连接上收到了报文,这都属于读事件。所以: EPOLLIN : 包含了读事件, FIN 报文的正常四次挥手、…...
webpack传输性能优化
手动分包 基本原理 手动分包的总体思路是:先打包公共模块,然后再打包业务代码。 打包公共模块 公共模块会被打包成为动态链接库(dll Dynamic Link Library),并生成资源清单。 打包业务代码 打包时,如果…...
智能小区物业管理系统打造高效智能社区服务新生态
内容概要 随着城市化进程的不断加快,智能小区物业管理系统的出现,正逐步改变传统物业管理的模式,为社区带来了崭新的管理理念和服务方式。该系统不仅提升了物业管理效率,还加强了业主与物业之间的互动,为每位居民提供…...
(done) MIT6.S081 2023 学习笔记 (Day7: LAB6 Multithreading)
网页:https://pdos.csail.mit.edu/6.S081/2023/labs/thread.html (任务1教会了你如何用 C 语言调用汇编,编译后链接即可) 任务1:Uthread: switching between threads (完成) 在这个练习中,你将设计一个用户级线程系统中的上下文切…...
面试经典150题——栈
文章目录 1、有效的括号1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、最小栈3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、逆波兰表达式求值4.1 题目链接4.2 题目描述4.3 解题代码4.4 解题思路 5、基本…...
openmv的端口被拆分为两个 导致电脑无法访问openmv文件系统解决办法 openmv USB功能改动 openmv驱动被更改如何修复
我之前误打误撞遇到一次,直接把openmv的全部端口删除卸载然后重新插上就会自动重新装上一个openmv端口修复成功,大家可以先试试不行再用下面的方法 全部卸载再重新插拔openmv 要解决OpenMV IDE中出现的两个端口问题,可以尝试以下步骤&#x…...
自制虚拟机(C/C++)(三、做成标准GUI Windows软件,扩展指令集,直接支持img软盘)
开源地址:VMwork 要使终端不弹出, #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") 还要实现jmp near 0x01类似的 本次的main.cpp #include <graphics.h> #include <conio.h> #include <windows.h> #includ…...
算法题(56):旋转链表
审题: 我们需要根据k的大小把链表向右移动对应次数,并返回移动后的链表的头结点指针 思路: 根据提示中的数据大小我们发现:k的值可以远大于节点数。 也就是说我们对链表的操作存在周期,如果k%len0,说明我们…...
解决PyG安装中torch-sparse安装失败问题:详细指南
1 问题描述 最近在学习GNN,需要使用PyTorch Geometric(PyG)库。在安装PyG的过程中,遇到了torch-sparse安装失败的问题,错误提示为: ERROR: Failed building wheel for torch-sparse本文将详细记录问题的解…...
如何创建折叠式Title
文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverGrid组件相关的内容,本章回中将介绍SliverAppBar组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverAppBar和普通的AppBar类似,它们的…...
go-zero学习笔记(三)
利用goctl生成rpc服务 编写proto文件 // 声明 proto 使用的语法版本 syntax "proto3";// proto 包名 package demoRpc;// golang 包名(可选) option go_package "./demo";// 如需为 .proto 文件添加注释,请使用 C/C 样式的 // 和 /* ... */…...
Wildcard工具详解:从入门到精通
1. Wildcard基础知识 什么是Wildcard? Wildcard(通配符)是一种用于匹配文件名或字符串的特殊字符。它允许用户使用简单的符号来表示复杂的匹配规则,从而快速定位目标文件或数据。 常见的Wildcard符号 *:匹配任意数量…...
冰蝎v3.0 beta7来啦
我用了一台kali,一台centos,一台windows,做了一个文件上传和一个反弹shell实验,载荷是AES加密的,终于感受到了对加密流量的无可奈何~ kali(php8.1)centos(php7.1)window…...
React中使用箭头函数定义事件处理程序
React中使用箭头函数定义事件处理程序 为什么使用箭头函数?1. 传递动态参数2. 避免闭包问题3. 确保每个方块的事件处理程序是独立的4. 代码可读性和维护性 示例代码总结 在React开发中,处理事件是一个常见的任务。特别是当我们需要传递动态参数时&#x…...
记忆化搜索和动态规划 --最长回文子串为例
记忆化搜索 记忆化搜索是一种优化递归算法的方法,通过将已经计算过的子问题的结果存储起来(通常使用哈希表或数组),避免重复计算相同的子问题。 本质上是通过缓存中间结果来减少计算的重复性。 动态规划 动态规划是通过将问题分…...
Tree Compass( Codeforces Round 934 (Div. 2) )
Tree Compass( Codeforces Round 934 (Div. 2) ) You are given a tree with n n n vertices numbered 1 , 2 , … , n 1, 2, \ldots, n 1,2,…,n. Initially, all vertices are colored white. You can perform the following two-step operation: …...
深入解析74181芯片中Cn+1的进位逻辑与实现原理
1. 74181芯片与Cn1进位的基础认知 第一次接触74181这块经典ALU芯片时,我被它内部精巧的进位逻辑设计震撼到了。这块诞生于上世纪60年代的4位算术逻辑单元,至今仍是理解计算机运算基础的绝佳教学案例。其中最精妙的部分莫过于Cn1进位信号的生成机制——它…...
DownKyi:解决B站视频下载痛点的创新方案——从低效操作到高效管理的完整实践
DownKyi:解决B站视频下载痛点的创新方案——从低效操作到高效管理的完整实践 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频…...
电源键按下去后发生了什么?用Wireshark+日志分析揭秘操作系统启动的隐藏细节
电源键背后的技术探秘:用Wireshark与日志分析揭开系统启动的黑盒 当你按下电源键的那一刻,整台计算机仿佛被注入了生命。但在这个看似简单的动作背后,隐藏着一场精密编排的技术交响乐。作为运维工程师或开发者,理解这个过程不仅有…...
【实战指南】系统变量编辑权限问题全解析
1. 系统变量编辑权限问题解析 最近在帮同事调试开发环境时,遇到一个典型问题:明明已经用管理员账号登录,却死活改不了系统环境变量。这让我想起自己刚接触Windows系统时踩过的坑,今天就把这些经验系统梳理一下。 系统变量本质上是…...
MoveIt新手避坑:Gazebo仿真时遇到‘Unable to identify controllers‘报错,检查这个launch文件就对了
MoveIt新手避坑:Gazebo仿真时遇到Unable to identify controllers报错解决方案 当你第一次尝试在Gazebo中运行MoveIt控制机械臂时,看到终端弹出鲜红的报错信息"Unable to identify any set of controllers that can actuate the specified joints&q…...
中国象棋AlphaZero:从零构建强化学习象棋AI的完整指南
中国象棋AlphaZero:从零构建强化学习象棋AI的完整指南 【免费下载链接】ChineseChess-AlphaZero Implement AlphaZero/AlphaGo Zero methods on Chinese chess. 项目地址: https://gitcode.com/gh_mirrors/ch/ChineseChess-AlphaZero 中国象棋AlphaZero是一个…...
Kazumi:自定义规则驱动的动漫资源聚合与播放方案
Kazumi:自定义规则驱动的动漫资源聚合与播放方案 【免费下载链接】Kazumi 基于自定义规则的番剧采集APP,支持流媒体在线观看,支持弹幕。 项目地址: https://gitcode.com/gh_mirrors/ka/Kazumi Kazumi作为一款基于自定义规则的开源番剧…...
Python量化投资数据接口实战指南:通达信数据获取与策略开发全流程
Python量化投资数据接口实战指南:通达信数据获取与策略开发全流程 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资领域,数据获取的效率与质量直接决定了策略的有…...
AI Agent岗位需求暴涨986%,年薪达19万美元,新职业“Agent师“横空出世!
Sam Altman和Dario Amodei先后押注同一件事:第一家"一人十亿美元公司"将在2026年出现。与此同时,AI Agent相关岗位需求一年内增长986%,均薪达到19万美元。一个不以编程为门槛的新职业方向,正在打破"做多大的事就需…...
如何快速掌握Sionna:下一代物理层研究开源库的5个实用技巧
如何快速掌握Sionna:下一代物理层研究开源库的5个实用技巧 【免费下载链接】sionna Sionna: An Open-Source Library for Next-Generation Physical Layer Research 项目地址: https://gitcode.com/gh_mirrors/si/sionna Sionna是一个基于TensorFlow的开源Py…...
