2

私はこのフォーラムとプログラミングと Python の両方が初めてです。私は最初のプログラムを開発しようとしていますが、特定の問題に関してレンガの壁に直面し続けています。私は、ある種の靴底が私を悲惨な状態から解放し、私がやりたいことを正しく行う方法を教えてくれることを望んでいます. 自分が何をしているのかを知っていれば簡単だと思いますが、現時点では私は愚かで、何をしているのかわかりません:-)

例:

AとBの2つのファイルで作業する必要があります

ファイル A には次のテキストが含まれています。

This is a test

ファイル B には次のテキストが含まれています。

h
t
s
i
a

ファイル A から一度に 1 文字を取得し、ファイル B を検索して同一の文字を探すプログラムを作成する必要があります。プログラムが一致を見つけたら、一致が見つかった行番号を出力してから、ファイル A から別の文字を取得して、EOF までこのプロセスを繰り返します。

4

3 に答える 3

0

最初にファイルを読み取り、そのA内容を変数に保存します ( を使用file.read)。

with open('A.txt') as f:

    data = f.read()  # now data is: "This is a test"
    # now data is string that dontains all data of the file A.
    # But as searching a character in a string is an O(N) operation
    # so we must convert this string to a better data-structure.
    # As we need the item as well as their first index so we
    # should create a dict here, with character as the key and
    # it's first appearance(first index) as it's value. 
    # Dicts provide O(1) lookup.

    dic = {}
    for ind, char in enumerate(data):
        # store the character in dict only if it is an alphabet
        # also check if it's already present is dict or not.
        if char.isalpha() and char not in dic:
            dic[char] = ind
    #dic is {'a': 8, 'e': 11, 'i': 2, 'h': 1, 's': 3, 'T': 0, 't': 10}

次に、ファイルを開き、Bfor ループを使用して反復処理します。ファイル イテレータに対する for ループは、一度に 1 行ずつ返します (メモリ効率の高いアプローチ)。

with open('B.txt') as f:
    for char in f:            #iterate one line at a time 
        char = char.strip()   #str.strip strips off whitespaces like '\n'
        if char in dic:
           print dic[char]     # if character is found in dict then
                              # print it's value, i.e index
...             
1
10
3
2
8
于 2013-06-16T14:15:12.430 に答える