在 python 中使用递归替代 len()

2024-06-03

作为 CS1301 问题的一部分,我正在尝试使用递归编写一个函数,该函数将执行与 len() 完全相同的操作。但是,我有两个问题:

  1. 我正在使用全局变量,但我在课程中还没有学到这一点。
  2. cs1301 自动评分器告诉我,我的函数返回 26 而不是 13(尽管当我运行它时,它打印 13)。不确定这是否与全局变量分配有关。

其余部分是不言自明的,如下面的代码所示:

#We've started a recursive function below called
#measure_string that should take in one string parameter,
#myStr, and returns its length. However, you may not use
#Python's built-in len function.
#
#Finish our code. We are missing the base case and the
#recursive call.
#
#HINT: Often when we have recursion involving strings, we
#want to break down the string to be in its simplest form.
#Think about how you could splice a string little by little.
#Then think about what your base case might be - what is
#the most basic, minimal string you can have in python?
#
#Hint 2: How can you establish the base case has been
#reached without the len() function?

#You may not use the built-in 'len()' function.

def measure_string(myStr):
    global ind
    global count
    if myStr == "":
        try: return count+1
        except: return 0
    else:
        ind = 0
        try: count +=1
        except: count = 0
        return measure_string(myStr[ind+1:])
    
    
#The line below will test your function. As written, this
#should print 13. You may modify this to test your code.
print(measure_string("13 characters"))


只需完全避免全局变量即可。这里不需要它们。

def measure_string(myStr):
    if myStr == "":
        return 0
    else:
        return 1 + measure_string(myStr[:-1])
        
measure_string('myStr')
# 5

Edit:如果你对黑魔法感兴趣,你可以考虑这个。但请你自己弄清楚为什么它会起作用。

def measure_string(myStr):
    return ( 
        (not myStr) or
        (2 + measure_string(myStr[:-1])) 
    ) - 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 中使用递归替代 len() 的相关文章

  • 从 python 安装脚本中的编译标志中删除 ppc

    我正在尝试在 Intel Mac OS X Leopard 计算机上安装 PIL 不幸的是 setup py build 认为它应该为 ppc 进行编译 gcc arch ppc arch i386 isysroot Developer S
  • 将表抓取到列表中

    我正在尝试从网页中提取表格 我已经设法将表中的所有数据放入列表中 然而 所有表数据都被放入一个列表元素中 我需要帮助将 干净 数据 即字符串 没有所有 HTML 包装 从表的行获取到它们自己的列表元素中 所以而不是 list tr th a
  • Visual Studio 2019中Python UnitTest下没有测试

    我在 Visual Studio 2019 Version16 3 9 中有一个现有的 python 项目 其中包含在 Visual Studio 2017 下为 unittest py 创建的单元测试 我已经为 unittest 配置了该
  • 将 mysql 连接传递给 python 线程时管道损坏

    我正在尝试将 mysql 连接传递给 python 中的线程 如果我在工作类中进行 mysql 的初始化 则不会出现错误 但是 连接的成本可能很高 因此我尝试仅从调用者函数传递 mysql 连接 请参见下面的代码 但这一直抛出这个错误 20
  • 如何在 Windows 中使用 pypy 作为 CPython Jupyter 的内核?

    我使用以下命令安装了 pythonAnaconda 安装程序 http anaconda 20installer我很高兴使用它附带的 Jupyter 版本 我也下载了 32 位 windows 版本的 pypy https bitbucke
  • 实施科赫曲线?

    我正在查看科赫雪花的维基百科页面 here http en wikipedia org wiki Koch snowflake 并且对所有示例都采用徽标 海龟风格感到困扰 所以我开始制作自己的返回列表或坐标的组件 我的实现是用Python编
  • Python 中“public static void main”的等价物

    Python 中 public static void main String args 的等价物是什么 我记得以前用过 后来就忘记了 我基本上想要记住的是一个我认为包含一些下划线 的函数 thx usr bin env python im
  • 如何矢量化 pandas 数据框前向列值搜索

    我想仅在前向搜索 pandas 数据帧列中的目标值 如果找到更大的值 那么我想将索引差异记录为结果列 我已经设法用两个内部 for 循环来做到这一点 但速度慢得令人痛苦 这就是我想在一个简化的示例中实现的目标 import pandas a
  • 如何通过 tkinter 使用 虚拟事件

    我正在 Python 3 5 2 中使用 tkk Combobox 主题小部件 我希望在选择一个值时发生一个操作 在Python中docs https docs python org 3 library tkinter ttk html v
  • Django Tastypie 高级过滤:如何使用 Q 对象进行复杂查找

    我有一个基本的 Django 模型 例如 class Business models Model name models CharField max length 200 unique True email models EmailFiel
  • 管理(和重命名)类组合的实例变量

    我想创建一个类组合 以便组合类的实例变量成为组合的实例变量 但名称经过调整 其应用是定义用于在 matplotlib 中绘图的新对象 一个例子是我想要一个函数drawMyArrow绘制一个箭头 其头部 尾部和弧线可能具有不同的颜色 和其他规
  • 如何在不在 iPython 笔记本中使用离线模式下的plotly进行绘图?

    我需要使用plotly绘制我的数据 但是这段代码没有给我任何结果 我显示我的数据 但没有任何数字 import plotly graph objs as go from plotly offline import download plot
  • 获得熊猫按群体连续几周的最长连续记录

    目前我正在处理不同主题的每周数据 但可能会有一些没有数据的长连续 所以 我想做的就是保留每个连续几周的最长连续id 我的数据如下所示 id week 1 8 1 15 1 60 1 61 1 62 2 10 2 11 2 12 2 13 2
  • del 在 Python 中什么时候有用?

    我实在想不出为什么 Python 需要del关键字 大多数语言似乎没有类似的关键字 例如 我们可以分配一个变量 而不是删除一个变量None到它 当从字典中删除时 del可以添加方法 有理由保留吗del在Python中 还是Python前垃圾
  • Python 解码 JSON 中的嵌套 JSON

    我正在处理一个 API 不幸的是它返回了格式错误 或 奇怪的格式 而是 感谢 fjarri JSON 但从积极的一面来看 我认为这可能是我学习一些有关递归以及JSON 这是我用来记录锻炼的应用程序 我正在尝试制作备份脚本 我可以很好地收到
  • 尝试将行附加到按对象分组中的每个组时出现奇怪的行为

    这个问题是关于一个函数在应用于两个不同的数据帧时以意想不到的方式表现的 更准确地说 是 groupby 对象 要么是我遗漏了一些明显错误的东西 要么是 pandas 中存在错误 我编写了以下函数 将一行附加到 groupby 对象中的每个组
  • Tastypie:GET 的身份验证和 POST 的匿名

    我使用 Django Tastypie 来管理我的用户集合 是否可以允许匿名用户在 API 中发布 在某个端点创建新用户时 并限制经过身份验证的用户仅获取自己的用户 而不是所有用户 感谢您的帮助 我发现最简单的事情就是对我正在使用的身份验证
  • 如何从数据存储区刷新 NDB 实体?

    我希望能够在我的代码调用的测试中断言Model put 对于已修改的实体 不幸的是 似乎正在进行一些缓存 例如以下代码 from google appengine ext import ndb class MyModel ndb Model
  • 如何有效地找到两个轮廓集之间的所有交点

    我想知道找到两组轮廓线之间所有交点 舍入误差 的最佳方法 哪种方法最好 这是示例 import matplotlib pyplot as plt import numpy as np x np linspace 1 1 500 X Y np
  • OSMNX - 边缘的哪个“部分”被认为是最近的

    我正在使用 OSMNX 中的 returned edges 函数 我不清楚在进行此计算时使用边缘的哪个 部分 它是边缘的任何部分吗 是中间点吗 对于网络中的长边来说 这会产生很大的差异 这取决于您如何参数化该函数 来自nearest edg

随机推荐

  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h
  • Networkx 中 Louvain 分区的可视化

    请帮助我更改 Louvain 聚类算法结果的可视化 我从网站上获取了代码https github com taynaud python louvain https github com taynaud python louvain我可以重写
  • SwiftUI 切换开关

    我正在尝试实现一个简单的切换开关 但在保存新的切换 开关状态时遇到问题 因为当我更改视图并返回设置时 它默认返回到关闭开关 你能告诉我我做错了什么吗 struct StudyMode View State private var overd
  • 使用 Pandas 和 Group By 绘制堆叠直方图

    我正在使用如下所示的数据集 Gender Height Width Male 23 4 4 4 Female 45 4 4 5 我想可视化高度和宽度的堆叠直方图 我希望每个图有两个堆叠的直方图 每个性别一个 这是文档中的堆叠直方图 如果存在
  • 在 Firebase 中手动插入数据

    我正在使用 Angular js 和 Firebase 创建一个应用程序 在界面正常工作之前 我计划手动插入数据 虽然添加键 值对很容易 但我无法弄清楚如何构建多个级别的数据 例如添加一个内部有多个条目的对象 如果我导入 json 文件 它
  • 如何安装DBMonitor

    这可能是一个非常简单的问题 但就是这样 我刚刚更新了 Firebird 的 DevArt DBExpress 驱动程序的许可证 帮助文件说我可以使用他们的免费软件 DBMonitor 应用程序 但由于我使用的是 D2006 所以我必须使用以
  • 使用 Amazon EC2 接收电子邮件?

    我使用 EC2 服务器发送电子邮件没有遇到任何问题 但如何检查发送给我的电子邮件 我有弹性 IP 设置并修改了反向 DNS 记录 我需要安装 Postfix 才能接收电子邮件吗 确保端口 25 在您的服务器上处于活动状态并打开 在您的实例上
  • 如何为每个用户或系统范围配置 Ivy 缓存目录?

    我在用SBT http www scala sbt org 作为我构建 Scala 项目的构建工具 我的问题是 我无法配置 SBT 将依赖项下载到我的用户主目录 因此 我正在寻找每个用户甚至更好的系统范围设置来告诉 SBT 将 Ivy 缓存
  • PostgreSQL:循环直到条件为真

    我正在尝试编写一个查询 该查询从指定值开始 循环 数据库 直到条件为真 例如 假设我在 TABLE 示例中有以下条目 id parent cond 1 True 2 1 False 3 1 False 4 2 False 我想要一个以 4
  • 应用程序网关如何防止请求发送到最近终止的 Pod?

    我目前正在 Azure 中研究和试验 Kubernetes 我正在使用 AKS 和应用程序网关入口 据我了解 当 Pod 添加到服务时 端点会更新 入口控制器会不断轮询此信息 随着新端点的添加 AG 也会更新 当它们被移除时 AG 也被更新
  • 如何使用完全空的类型使 Activator.CreateInstance 运行速度减慢约 20 倍

    Given NET 程序集命名expression host NET 程序集命名CreateInstanceTest CreateInstanceTest 在其配置文件中启用 NetFx40 LegacySecurityPolicy exp
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • 实现 PHP 单例:静态类属性还是静态方法变量?

    所以 我总是像这样实现一个单例 class Singleton private static instance null public static function getInstance if self instance null se
  • 如何使用批处理文件将多个命令插入到批处理文件中

    我正在制作一个批处理文件 我们称之为 Create bat 它将创建一个批处理文件 我们称之为 Created bat 该文件将在其中插入多个命令 其中一条命令如下 FOR F x IN tasklist NH FI IMAGENAME e
  • Windows 2k8 上的 Coldfusion 10 - .com/ 加载正常,但 .com/index.cfm 给出 404

    我正在按照 Pete Freitag 的新 CF10 锁定指南设置一台新服务器 CF10 W2K8 我安装了一个测试站点 如果我打开 www mydomain com 它会加载默认文档 index cfm 但是 如果我尝试 www mydo
  • Angular 2 在没有 @Input 或 @Output 的情况下监视组件属性的更改

    在 Angular 1 x 中 我可以使用 watch 来观看我想要的任何内容 但是在 Angular 2 中 我们有 ngOnChanges 它非常酷且高性能 但只能监视输入和输出装饰器 然而 有时我确实需要观察本地属性 以便在它们发生变
  • Powershell - 从图像网址下载图像

    对 powershell 的了解有限 我尝试从图像网址下载图像 例如这样 http hdwallpaperia com wp content uploads 2014 01 Mc Laren P1 Wallpaper Image Pictu
  • char[length]初始化并处理

    我定义了一个字符数组 char d 6 如果我在以下方面有误 请纠正我 此时没有为变量分配内存d 现在我要初始化它 d aaaaa 这种初始化之后 就不需要释放内存了 它将自动完成 我怎么知道是否char 被初始化了吗 我正在寻找类似的模式
  • “显式”关键字对返回值优化 (RVO) 有何影响?

    以下代码工作得很好 显示 RVO struct A A int cout lt lt A A n constructor A const A cout lt lt A A const A n copy constructor A foo r
  • 在 python 中使用递归替代 len()

    作为 CS1301 问题的一部分 我正在尝试使用递归编写一个函数 该函数将执行与 len 完全相同的操作 但是 我有两个问题 我正在使用全局变量 但我在课程中还没有学到这一点 cs1301 自动评分器告诉我 我的函数返回 26 而不是 13