繁体   English   中英

只需要在 for 循环外打印一次

[英]Need to print only once outside the for loop

如果输入字符串有两个连续的相同字母,我正在尝试打印“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")

Output:假,假,真,假,假,假

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

使用其他变量

a="Matthew"
double = False

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

只是为了后代的缘故,我想您可能会发现知道 regex 提供了一个更简洁的解决方案很有趣:

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

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

a = "Matthew"

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

Output: True

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

因此,如果输入是a="Mathew" ,它将打印false

>>> print(any(i == j for i, j in zip(a[:-1], a[1:])))
True
# i j
# - -
# M a  No match.
# a t  No match.
# t t  Match. Done.
# t h
# h e
# e w

或者性能稍高但更冗长的版本(当然re.search方法更快,但需要了解正则表达式):

c = a[0]
for c2 in a[1:]:
    if c == c2:
        print('True')
        break
    c = c2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM