【问题标题】:Python endswith() function, without the built-in functionPython endwith() 函数,没有内置函数
【发布时间】:2019-03-29 15:09:55
【问题描述】:

我需要在不使用 Python 中的内置函数的情况下创建 endswith() 函数。我想知道是否有什么方法可以让我做得更短更容易?肯定有,我的方法真的很复杂。

string = "example for endswith"

find = "endswith"

l = len(find)

final = False

b = 0
tstring =[]
new = "" 
for i in string:
    if find[b] == i:
        tstring.insert(b,i)
        b = b + 1
        if b == l:
            print(tstring)
            break
for x in tstring: 
        new += x

print(new)

if(new==find):
    final = True

print(final)

【问题讨论】:

  • 请在此站点上包含您的代码(有一个格式化选项:{})并且不要链接到外部站点
  • 请将您的代码和所有相关信息作为文本包含在您的问题中,而不是图像。
  • 欢迎来到 StackOverflow,请直接在问题正文中填写您的 tour 并查看 How to Askedit 您的问题并使用您的代码。
  • 像“它有效,但我需要一个更短更好的”这样的句子。表明您的问题可能更适合 codereview.stackexchange.com ;>
  • 我是该网站的新手对不起,我编辑了它。

标签: python function ends-with


【解决方案1】:

这个怎么样:

def endswith(a, b):
  for i in range(len(b)):
    if a[-1-i] != b[-1-i]:
      return False
  return True

这是一个递归实现,没用,仅用于教育目的:

def endswith(a, b):
  return not b or (b[-1] == a[-1] and endswith(a[:-1], b[:-1]))

或者,当然,没有循环:

def endswith(a, b):
  return a[-len(b):] == b

但我认为这不是任务的想法。

【讨论】:

  • 非常感谢您的帮助! :)
  • 欢迎来到 StackOverflow!没有必要离开感谢 cmets。只需在答案对您有帮助时投票(答案左侧的向上三角形,这是更简单的谢谢)和/或在解决您的问题时接受(复选标记)。
【解决方案2】:
string = "example for endswith"

find = "endswith"

l = len(find)

final = False

print(find[::-1] == string[::-1][:l])

【讨论】:

  • 我建议不要使用变量名称lOI。根据字体的不同,它们看起来很像 10l,可能会导致很多混乱。
  • 我赞同 Alfe 的评论。一般来说,尽量不要使用单字母的变量名
  • 请描述,你做了什么改变以及为什么,以帮助其他人理解问题和这个答案
猜你喜欢
  • 2012-10-21
  • 2015-01-27
  • 2010-11-07
  • 2010-10-22
  • 2021-09-08
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 2012-02-03
相关资源
最近更新 更多