私はアラバマ大学の CS 専攻です。私たちの python クラスにプロジェクトがあり、行き詰まっています...おそらく何らかの愚かな理由で、答えが見つからないようです。
ここで試して説明するのは面倒なので、ここにプロジェクトへのリンクがあります。
http://beastie.cs.ua.edu/cs150/projects/project1.html
ここに私のコードがあります:
import sys
from scanner import scan
def clInput():
#Gets command line input
log1 = sys.argv[1]
log2 = sys.argv[2]
name = sys.argv[3]
if len(sys.argv) != 4:
print('Incorrect number of arguments, should be 3')
sys.exit(1)
return log1,log2,name
def openFiles(log1,log2):
#Opens sys.argv[1]&[2] for reading
f1 = open(log1, 'r')
f2 = open(log2, 'r')
return f1, f2
def merge(log1,log2):
#Merges parsed logs into list without '---'
log1Parse = [[]]
log2Parse = [[]]
log1Count = 0
log2Count = 0
for i in log1:
if i != ['---']:
log1Parse[log1Count].append(i)
else:
log1Count += 1
log1Parse.append([])
for i in log2:
if i != ['---']:
log2Parse[log2Count].append(i)
else:
log2Count += 1
log2Parse.append([])
return(log1Parse[0] + log2Parse[0] + log1Parse[1] + log2Parse[1])
def searchMerge(name,merged):
#Searches Merged list for sys.argv[3]
for i in range(len(merged)):
if (merged[i][1] == name):
print(merged[i][0],merged[i][1]," ".join(merged[i][2:]))
def main():
log1,log2,name = clInput()
f1,f2 = openFiles(log1,log2)
#Sets the contents of the two scanned files to variables
tokens1 = scan(f1)
tokens2 = scan(f2)
#Call to merge and search
merged = merge(tokens1,tokens2)
searchMerge(name,merged)
main()
わかった。ここに問題があります。--- で区切られた 2 つのリストを、並べ替えられたマスター リストにマージします。
私の 2 つのログ ファイルは、上記のリンク先の Web サイトに投稿されたものと一致します。このコードは機能しますが、各リストに --- のインスタンスが 3 つ以上ある場合、他のトークンを取得するために次のリストにジャンプすることはありません。マージ機能を使用して2人で作業しています。その関数の最後に私は戻ります
return(log1Parse[0] + log2Parse[0] + log1Parse[1] + log2Parse[1])
しかし、これは --- の 2 つのインスタンスに対してのみ機能します。[0]、[1]、[2] などを手動で入力する代わりに、すべてのインデックスを確認するようにリターンを変更できる方法はありますか? 任意の金額で区切ってマージする必要があります。助けてください!!
PS初心者を無視してください...私は初心者です、私たちは皆どこかから始めなければなりません
pps - スキャナーからのインポート スキャンは、特定のリスト内のすべてのトークンを取得するために作成したスキャナーです。