趣味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: …...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...