2016-04-23 4 views
0

単語を入力として受け取り、3つの連続する文字がアルファベットの連続した文字であるかどうかを判断するプログラムを作成します。アルファベット順の3つの連続する文字

これは私にとっては難しかったです。私のプロセスは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

それは勝ったので、あなたのプログラムのいくつかの構文/インデントエラーがあります」コンパイル段階にも合格します。実際に動作するプログラムを提供してください。私があなたが書いたと思うものについてのコメント:1. 2つの文字だけをチェックする最初の 'if'条件はなぜですか? 2. 3つの手紙の平均はどのように役立つべきですか?それは 'ace'を連続的に決定するでしょう... –

答えて

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' 
関連する問題