簡體   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