上海定制网站建设费用,龙元建设集团股份有限公司网站地址,华丰建设股份有限公司网站,交换友情链接的网站标准是什么我的博客
文章首发于公众号#xff1a;小肖学数据分析 Python作为一种强大的编程语言#xff0c;以其简洁明了的语法和强大的标准库#xff0c;成为了理想的工具来构建这些解决方案。
本文将通过Python解析几个经典的编程问题。
经典案例
水仙花数
问题描述#xff1a…我的博客
文章首发于公众号小肖学数据分析 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_cachelru_cache(maxsizeNone)
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))结语
掌握构建程序的逻辑就像攀登一座山峰。在这个过程中我们不断地解决问题逐步攀升直到最终达到顶峰。让我们享受编程带来的挑战和乐趣。