【问题标题】:Need to print only once outside the for loop只需要在 for 循环外打印一次
【发布时间】:2019-10-30 20:16:16
【问题描述】:

如果输入字符串有两个连续的相同字母,我会尝试打印“True”。例如:a="Matthew"。对于这个输入,它应该打印 True,因为单词 'Matthew' 有两个连续的相同字母(“t”)。类似地,为单词“John”打印 False,因为它没有连续的字母。

代码:

 a="Matthew"

 for i in range(len(a)-1):
    if a[i]==a[i+1]:
       print("True")
    else:
       print("False")

输出: 错误的, 错误的, 真的, 错误的, 错误的, 假的

如果有后续字母,只需要打印一次“True”,如果没有后续字母,则只需要打印一次“False”。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    为了后代,我想您可能会觉得知道 regex 提供了更简洁的解决方案很有趣:

    a = "Matthew"
    if re.search(r'(.)\1', a) :
        print("MATCH")
    else:
        print("NO MATCH")
    

    【讨论】:

      【解决方案2】:

      使用其他变量

      a="Matthew"
      double = False
      
      for i in range(len(a)-1):
         if a[i]==a[i+1]:
            double = True
            break
      print(double)
      

      【讨论】:

      • 可以用break语句代替另一个变量吗?
      • 如果我们知道前两个字符匹配,则无需解析整个字符串,例如s = 'aabcdefghijklmnopqrstuvwxyz'
      【解决方案3】:

      Python 有 for-else 循环。 所以,也可以这样做:

      a = "Matthew"

          for i in range(len(a)-1):
              if a[i]==a[i+1]:
                print("True")
                break
          else:
               print("False")
      

      输出:True

      else 部分仅在for-loop 遍历范围时执行;介于两者之间的任何break 都将导致跳过else 部分的执行。

      所以,如果输入是a="Mathew",它将打印false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-05
        • 2021-01-30
        • 1970-01-01
        • 2016-01-09
        • 1970-01-01
        • 2015-10-21
        相关资源
        最近更新 更多