【问题标题】:Need steps for a basic python loop question需要基本 python 循环问题的步骤
【发布时间】:2020-08-31 21:55:09
【问题描述】:

我完全是个编程菜鸟,所以请原谅我的无知。我正在参加 MOOC,但终生无法弄清楚要采取哪些步骤来解决这个问题:

假设 s 是一串小写字符。

编写一个程序,打印字符串 'bob' 在 s 中出现的次数。例如,如果 s = 'azcbobobegghakl',那么你的程序应该打印

bob出现的次数是:2

好的。我知道一个 for 循环是必要的。我认为应该从:

x=bob
count=0
for count in range(s):
>if 

这里我不确定如何从索引中检索特定的单词“bob”,我知道我需要输入 count+=1 但不确定在哪里。有人可以帮我吗?我确信我可以自己解决这个问题,但几个小时后我感到很沮丧!

【问题讨论】:

  • Youll need range(len(s))` 而不是 range(s),因为 s 不是整数。然后,使用x == s[count : count+len(x)]。
  • 啊哈!我在想我可能必须将 str 转换为 int。谢谢老大。
  • 在那之后我需要嵌套我的 if 语句吗?我仍然不确定如何开始这些下一个 if 语句。
  • 您不需要嵌套任何 if 语句。这样想吧。当您查看字符串s 时,您如何知道x 中的单词已经开始?既然你知道它已经开始了,你怎么知道它已经结束了?
  • 我真的处于停顿状态。我现在需要重新定义 x 吗?我不确定如何隔离单个字母的值。我是否需要使用 if 语句?这是我现在拥有的:for x in range(len(s)): >x==s[count:count+lensx)]

标签: python loops


【解决方案1】:
# our input variables:
term = 'bob'
s = 'azcbobobegghakl'

# where I store count of found search term:
count = 0

# we are going from 0 to length of input string:
for i in range(len(s)):

    # compare the slice from <current index> to <current index + length of search term> to search term
    if s[i:i+len(term)] == term:
        # it there's match, increase the count
        count += 1

print(count)

打印:

2

【讨论】:

    【解决方案2】:

    所以这是我的解决方案:

    s = 'azcbobobegghakl' 
    x = 'bob'
    count = 0
    for i in range(len(s)):
        if x == s[i : i + len(x)]:
            count+= 1
    print(count)
    

    有几点需要注意。首先,您的for 语句有几个错误,您在语句之前使用了变量count,但还在for 语句中创建了一个新变量count,所以我在语句中用变量替换了它命名i,这样它就不会覆盖您的第一个count 变量。其次,它必须是 range(len(s)),因为 s 是一个字符串,您需要迭代到它的长度。

    最后解释一下if x == s[i : i + len(x)]:部分,这是看X是否和S中的第i个位置一样,以及S中接下来的2个字母,因为X('bob')的长度是3,因此您需要查看每个len(x) 或s 字符串中的三个字母。

    【讨论】:

      【解决方案3】:

      我做了这样的事情,我很确定有人可以优化代码,我只是尝试了一个快速的。到目前为止它有效。

      keyword = "bob"
      text = "azcbobobegghakl"
      n = len(keyword)
      temp = ""
      counter = 0
      for x in (text):
          temp += x
          if len(temp)%(n+1) == 0:
              temp = temp[1::]
              if keyword in temp:
                  counter += 1
      print(counter)
      

      【讨论】:

      • 谢谢。它似乎有效,但在某些情况下它以某种方式只缺少一个“bob”,例如:“bobobobobobobobobob”10 是预期的。我将使用您的答案,因为我一生都无法解决如何解决这个问题。有任何技巧或资源来练习和了解更多关于这些的信息吗?大多数指南没有提供比讲座更多的信息。
      • 去吧,我没有意识到,是的,这是真的,它缺少第一个鲍勃。我认为 HackerRank.com 是练习代码的好地方。我不时使用它。
      【解决方案4】:

      只是一个完成已经给出的答案的建议。

      您可以先检查您要查找的字符串'bob' 是否存在于要搜索的字符串s 中,例如:

      s = 'azcbobobegghakl'
      if 'bob' in s:
          # your searching algotithm
      

      【讨论】:

        【解决方案5】:

        这也可行

        s = 'azcbobobegghakl' 
        x = 'bob'
        count = 0
        for i in range(len(s)):
            if s[i:].startswith(x):
                    count += 1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-05
          • 2010-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多