Python中的程序逻辑经典案例详解

2023-12-17 03:28

本文主要是介绍Python中的程序逻辑经典案例详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我的博客

文章首发于公众号:小肖学数据分析

Python作为一种强大的编程语言,以其简洁明了的语法和强大的标准库,成为了理想的工具来构建这些解决方案。

本文将通过Python解析几个经典的编程问题。

经典案例

水仙花数

问题描述:水仙花数指的是一个n位数,它的各位数字的n次幂之和等于它自身。例如,对于三位数153,其满足1^3 + 5^3 + 3^3 = 153,因此它是一个水仙花数。

Python代码实现

def is_narcissistic(number):# 将数字转换成字符串,便于后续遍历其各个位上的数字digits = [int(d) for d in str(number)]# 比较原数和其各位数字幂次和是否相等,从而判断是否为水仙花数return sum(d**len(digits) for d in digits) == number# 检索并打印出所有三位水仙花数
narcissistic_numbers = [num for num in range(100, 1000) if is_narcissistic(num)]
print("水仙花数:", narcissistic_numbers)
百钱百鸡

问题描述:古中国数学家提出的问题。现有100文钱,需要买100只鸡。其中公鸡每只5文钱,母鸡每只3文钱,小鸡3只1文钱。如何买?

Python代码实现

def calculate_hundred_chickens():solutions = []# 遍历公鸡的可能数目for roosters in range(21):  # 公鸡最多买20只# 遍历母鸡的可能数目for hens in range(34):  # 母鸡最多买33只# 通过总数和总金额限制计算小鸡数目chicks = 100 - roosters - hensif 5 * roosters + 3 * hens + chicks / 3 == 100:solutions.append((roosters, hens, chicks))return solutions# 输出可能的买鸡方案
print("百钱买百鸡的方案:", calculate_hundred_chickens())
Craps骰子游戏

问题描述:玩家掷两个骰子,如果第一次掷出7点或11点则玩家胜,掷出2点、3点或12点则庄家胜,其他点数玩家继续掷骰,直到点数重复则玩家胜,掷出7点则庄家胜。

Python代码实现

from random import randrangedef roll_dice():# 模拟掷骰子,返回两个骰子点数之和return randrange(1, 7) + randrange(1, 7)def play_craps():# 第一轮掷骰子结果point = roll_dice()# 玩家胜利的点数wins = {7, 11}# 庄家胜利的点数losses = {2, 3, 12}# 根据第一轮的结果判断胜负if point in wins:return "玩家胜利!"elif point in losses:return "庄家胜利!"# 若未分出胜负,继续游戏while True:roll = roll_dice()if roll == point:return "玩家胜利!"elif roll == 7:return "庄家胜利!"# 模拟游戏并输出结果
print("Craps赌博游戏结果:", play_craps())

进阶练习题

斐波那契数列

问题描述:斐波那契数列是这样一个数列,除前两个数字外,每个数字都是前两个数字之和。求斐波那契数列的第n项。

Python代码实现

from functools import lru_cache@lru_cache(maxsize=None)
def fibonacci(n):# 基准情况处理if n in (0, 1):return n# 递归求解斐波那契数列的前两项return fibonacci(n-1) + fibonacci(n-2)# 计算前20个斐波那契数列数并打印
for i in range(20):print(fibonacci(i), end=" ")
print()
完美数

问题描述:一个等于其所有真因子(即除了自身以外的约数)之和的数称为完美数。求不超过10000的所有完美数。

Python代码实现

def is_perfect_number(n):# 计算除自身外所有因子的和factors = [1] + [i for i in range(2, int(n**0.5)+1) if n % i == 0]# 检查因子和是否等于原数return sum(factors) + sum(n // i for i in factors if i != 1 and n // i != i) == n# 寻找并打印所有完美数
print([n for n in range(2, 10001) if is_perfect_number(n)])
素数生成

问题描述:素数是只能被1和它自己整除的大于1的数。求不超过100的所有素数。

Python代码实现

def eratosthenes_sieve(limit):# 创建一个布尔数组,初始假设所有数字都是素数primes = [True] * limit# 用埃拉托斯特尼筛法筛选素数for num in range(2, int(limit**0.5) + 1):if primes[num]:# 将num的倍数标记为非素数primes[num*num:limit:num] = [False] * ((limit - num*num - 1) // num + 1)# 筛选并返回素数列表return [num for num in range(2, limit) if primes[num]]# 打印100以内的素数
print(eratosthenes_sieve(100))

结语

掌握构建程序的逻辑,就像攀登一座山峰。在这个过程中,我们不断地解决问题,逐步攀升,直到最终达到顶峰。让我们享受编程带来的挑战和乐趣。

这篇关于Python中的程序逻辑经典案例详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/502906

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。