2016-04-23 2 views
0

Напишите программу, которая принимает слово в качестве входных данных и определяет, имеет ли она три последовательных буквы, которые также являются последовательными буквами в алфавите.Три последовательных символа, которые также являются алфавитными

Это было тяжело для меня. Моим процессом было использование ord() и получить среднее значение, а если среднее значение = 2-й символ, это было правильно.

word = input("Please enter a word:") 

n = len(word) 

for i in range(n-2): 
i = 0 
if ord (word [i+1]) - ord (word [i]) == 1: 
    print("This works!") 

elif ord (word [i+2] - ord (word [i+1] - ord (word [i]) == 1: 
    print ("This also works. 

else: 
    print("This doesn't work.") 
+1

Есть несколько ошибок синтаксиса/отступа в вашей программе, так что выиграл» t даже пройти этап компиляции - пожалуйста, предоставьте программу, которая фактически выполняется. Некоторые комментарии о том, что я думаю, вы хотели написать: 1. Почему первое условие 'if', которое проверяет только две буквы? 2. Как должно помочь среднее из трех букв? Это будет определять, что «туз» будет последовательным ... –

ответ

1

Использование среднего - это не очень хорошая идея. Среднее значение 8,9,10 равно 9, но также среднее значение 5,9,13.

Как насчет делать то, что вопрос гласит:

def consec(s, n=3): 
    l = len(s) 
    if l < n: 
     raise ValueError("String too short to contain repetition of length {}".format(n)) 
    for i in range(l-2): 
     # Check if you get the same letter by adding 1 or 2 to the next ones 
     # or by substracting 1 or 2... 
     if ord(s[i]) == ord(s[i+1])+1 == ord(s[i+2])+2 or \ 
      ord(s[i]) == ord(s[i+1])-1 == ord(s[i+2])-2: 
      return s[i:i+3] 
    return "" 

Это чувствительно к регистру, кстати:

In [11]: consec("cba") 
Out[11]: 'cba' 

In [12]: consec("Abc") 
Out[12]: '' 

In [13]: consec("cdskj sdoifsdjflkduf sdfjstudfu0gnfgsba") 
Out[13]: 'stu'