3

単語または文にアルファベットの各文字があるかどうかを確認しようとしていますが、文/単語に含まれていないすべての文字を印刷することはできません。

alpha = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'
,'u','v','w','x','y','z']
x = raw_input('')
counter  = 0
counter2 = 0
for i in range(len(x))
    counter += 1
    for o in range(26):
        counter2 += 1
        if alpha[counter2] not in x[counter]:

そして私はそこで立ち往生しています...

4

4 に答える 4

4
alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'
,'u','v','w','x','y','z'}
input_chars = set(raw_input())
print alphabet - input_chars

アルファベット文字のセットと入力の文字セットの違いを設定するだけです。差分操作は、任意の iterable を 2 番目のオペランドとして使用できることに注意してください。そのため、入力をセットに変換する必要がない場合でも、実際には必要ありませんが、これにより差分がわずかに高速化されます。さらに、アスキー文字を提供する組み込みの文字列があるため、次のようにすることができます。

import string
print set(string.ascii_lowercase) - raw_input()
于 2012-10-09T01:06:39.077 に答える
2

すでに両方の文字列を繰り返し処理しているので、とを使用する必要はありませcountercounter2

あなたはほとんどそこにいました。Pythonを使用するとリスト操作が簡単になるため、インデックスを使用してリストを要素ごとに繰り返す必要はありません。

alphabet = 'abcdefghijklmnopqrstuvwxyz'
sentence = raw_input('Enter a sentence: ').lower()  # Because 'a' != 'A'

letters = []

for letter in sentence:
    if letter in alphabet and letter not in letters:
        letters.append(letter)

print(letters)
于 2012-10-09T01:08:10.607 に答える
2

使用set difference:

import string
x=raw_input()
not_found=set(string.ascii_lowercase) - set("".join(x.split()))
print (list(not_found))

出力:

>>> 
the quick brown fox
['a', 'd', 'g', 'j', 'm', 'l', 'p', 's', 'v', 'y', 'z']
于 2012-10-09T01:00:26.863 に答える
1

はるかに簡単:

 import string
 x = raw_input()
 print [c for c in string.ascii_lowercase if c not in x]
于 2012-10-09T00:58:04.360 に答える