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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符