Python实验3 函数与代码复用
目的:理解函数封装与递归思想
实验任务:
- 基础 :编写函数cal_factorial(n)计算阶乘(循环实现)。
源码:
def cal_factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
从控制台获取输入
try:
number = int(input("请输入一个整数来计算它的阶乘: "))
if number < 0:
print("负数没有阶乘,请输入一个非负整数。")
else:
factorial = cal_factorial(number)
print(f"{number} 的阶乘是: {factorial}")
except ValueError:
print("输入无效,请输入一个有效的整数。")
运行截图:

- 进阶 :用递归实现斐波那契数列(考虑添加缓存优化)。
源码:
用于存储已经计算过的斐波那契数
fib_cache = {}
def fibonacci(n):
"""
此函数使用递归和缓存优化来计算斐波那契数列的第 n 项。
:param n: 要计算的斐波那契数列的位置
:return: 斐波那契数列的第 n 项的值
"""
# 检查是否已经计算过该值
if n in fib_cache:
return fib_cache[n]
# 基本情况
if n == 0 or n == 1:
result = n
else:
# 递归计算
result = fibonacci(n - 1) + fibonacci(n - 2)
# 将计算结果存入缓存
fib_cache[n] = result
return result
if name == "main":
try:
# 从控制台获取用户输入
n = int(input("请输入要计算斐波那契数列的位置(非负整数): "))
if n < 0:
print("输入无效,请输入一个非负整数。")
else:
# 调用函数计算斐波那契数
result = fibonacci(n)
print(f"斐波那契数列的第 {n} 项是: {result}")
except ValueError:
print("输入无效,请输入一个有效的非负整数。")
运行截图:

- 拓展 :科赫曲线正向、反向绘制,加入绘制速度、绘制颜色等额外功能
源码:
import turtle
def koch(t, order, size, speed, color):
t.speed(speed)
t.pencolor(color)
if order == 0:
t.forward(size)
else:
koch(t, order - 1, size / 3, speed, color)
t.left(60)
koch(t, order - 1, size / 3, speed, color)
t.right(120)
koch(t, order - 1, size / 3, speed, color)
t.left(60)
koch(t, order - 1, size / 3, speed, color)
def draw_koch_snowflake(order, size, speed, color, is_reverse=False):
t = turtle.Turtle()
screen = turtle.Screen()
if is_reverse:
t.right(180)
for _ in range(3):
koch(t, order, size, speed, color)
t.right(120)
screen.exitonclick()
正向绘制雪花示例
draw_koch_snowflake(order=3, size=300, speed=3, color="blue", is_reverse=False)
反向绘制雪花示例
draw_koch_snowflake(order=3, size=300, speed=3, color="red", is_reverse=True)
正向运行截图:

反向绘制运行截图:

Python实验3 函数与代码复用的更多相关文章
- Python基础篇(三)_函数及代码复用
Python基础篇_函数及代码复用 函数的定义.使用: 函数的定义:通过保留字def实现. 定义形式:def <函数名>(<参数列表>): <函数体> return ...
- 函数和代码复用 --Python
1.关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再 ...
- Python学习笔记(五)函数和代码复用
函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...
- 使用python对py文件程序代码复用度检查
#!/user/bin/env python # @Time :2018/6/5 14:58 # @Author :PGIDYSQ #@File :PyCheck.py from os.path im ...
- Python__函数和代码复用
主要内容 函数的定义和使用 实例:七段数码管的绘制 代码复用与函数递归 PyInstall库的使用 实例:科赫雪花小包裹 函数的定义与使用 函数的理解与定义 函数的使用及调用过程 函数的参数传递 函数 ...
- 我居然不知道Vue3可以使用hooks函数实现代码复用?
每天都要开心(▽)哇: 项目开发过程中,我们会遇到一些情况,就是多个组件都可以重复使用的一部分代码逻辑,功能函数,我们想要复用,这可怎么办呢? VUE2我们是怎么做的呢? 在vue2 中有一个东西:M ...
- python自定义pi函数的代码
下边内容是关于python自定义pi函数的内容. def pi(): # Compute digits of Pi. # Algorithm due to LGLT Meertens. k, a, b ...
- Python学习笔记6函数和代码复用
1.函数 (1)定义: (2)函数调用 (3)函数的参数传递 参数传递的两种方式:函数调用时,参数可以按照位置或名称的方式传递 (4)函数的返回值 (5)局部变量和全局变量 (6)lambda函数 2 ...
- Python语言程序设计基础(5)—— 函数和代码复用
lambda sum = lambda x,y : x + y print(sum(3,3),type(sum)) 默认参数 def prints(str,times = 2) : print(str ...
- Python中用函数实现代码的复用
# Python中用函数实现代码复用 """ def funcname(paras): statements return [expression] 关于函数定义说明如下 ...
随机推荐
- PHP常量与数据类型
PHP常量与数据类型 PHP常量 在PHP中,常量是值在脚本执行期间不会改变的量.常量使用define()函数或const关键字来定义. 使用define()函数: define("GREE ...
- linux系统ntp时间同步
linux系统ntp时间同步 概要 linux系统时间同步有ntp和chrony两种不同实现方式. 两者相比chrony性能更优,如果系统支持,那么能够使用chrony尽量使用它. chrony 具有 ...
- dp 常见套路总结
dp 里存的东西值域不大的时候,考虑把状态中某一维和 dp 里存的东西交换,进行 dp. 连续段 dp 时,考虑把连续段化为对每个元素考虑接上一个元素. dp 里的值可能存在某个上界,超过这个值一定不 ...
- Windows系统安装Ollama超简教程(附DeepSeek R1实战)
一.Ollama下载指引 官网地址:https://ollama.com/download 选择Windows版本直接下载(推荐64位系统),安装包745MB左右,支持Win10/11系统.点击&qu ...
- [AI/GPT] 硅基流动(SiliconFlow) : AI大模型时代的基础设施
概述:硅基流动(SilliconFlow) 简介 硅基流动(SiliconFlow) 是一家专注于人工智能(AI)基础设施的公司,致力于通过技术创新降低大模型(如生成式AI和大语言模型)的部署和推理成 ...
- 解锁 DeepSeek 的高效秘籍:技术人员的进阶技巧
DeepSeek 作为一款强大的代码搜索引擎,能够帮助开发者快速定位代码.解决疑难问题,甚至学习前沿技术.但想要真正释放其潜力,必须掌握以下核心技巧.本文将通过重点标注,直击高效使用 DeepSeek ...
- SQL Server 2005与2008清空日志方法
SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:SQL2005 清空日志的方法:Backup Log D ...
- selenium 提示 Non-UTF-8 code starting with '\xc4'
解决(1):在程序最上方加上语句,# coding=gbk 解决(2):在preference下进行修改
- 在B站刷学习视频时如何知道剩余分集视频总时长?
在B站刷学习视频时如何知道剩余分集视频总时长? 转载于:bilibili笔记 作者:丶whimmy 前言 最近在B站刷黑马的前端视频课.然而每次看视频都不知道还剩多少时长,制定计划时都很苦恼. 多达4 ...
- python 读写csv文件(创建,追加,覆盖)
读取csv文件 利用 csv.reader 可以读 csv 文件,然后返回一个可迭代的对象 csv_read,我们可以直接从 csv_read 中取数据 import csv def read_csv ...