Я пытаюсь вывести «Истина», если во входной строке есть две последовательные одинаковые буквы. Foe ex: a = "Matthew". Для этого ввода он должен вывести True, поскольку слово "Matthew" имеет две идущие подряд одинаковые буквы ("t"). Аналогичным образом выведите False для слова «John», поскольку оно не имеет последовательных букв.

Код:

 a="Matthew"

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

Выход: Ложь, Ложь, Истина, Ложь, Ложь, Ложь

Просто нужно печатать только один раз «True», если есть последовательные буквы, и нужно печатать только один раз «False», если нет последовательных букв.

0
user11582315 30 Окт 2019 в 07:40

3 ответа

Я подумал, что вам будет интересно узнать, что регулярное выражение предлагает гораздо более краткое решение:

a = "Matthew"
if re.search(r'(.)\1', a) :
    print("MATCH")
else:
    print("NO MATCH")
2
Tim Biegeleisen 30 Окт 2019 в 07:46

В 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

1
adarsh 30 Окт 2019 в 08:55

Использовать другую переменную

a="Matthew"
double = False

for i in range(len(a)-1):
   if a[i]==a[i+1]:
      double = True
      break
print(double)
2
Dev 30 Окт 2019 в 15:16
1
Вместо другой переменной мы можем сделать оператор break?
 – 
user11582315
30 Окт 2019 в 07:59
Нет необходимости анализировать всю строку, если мы знаем, что первые два символа совпадают, например s = 'aabcdefghijklmnopqrstuvwxyz'
 – 
Alexander
30 Окт 2019 в 08:14