私はPythonチャレンジARG用の初心者向けのPythonスクリプトを作成しています。基本的な目的は、大量のテキストを読み取るスクリプトを作成し、小文字だけを正確に3つの大文字で両側を通過させることです。スクリプトは、リストから入ってくる文字を見て、次の3文字と前の3文字をリストに格納することになっています。これが起こると、スクリプトは入力文字が大文字であるかどうかを評価し、ループが開始された場合はスクリプトを評価し、リストの3文字すべてが大文字であるかどうかを評価します。条件が満たされていれば、スクリプトは現在の文字を出力しなければなりません。さもなければループが始まります。Pythonスクリプトは無限ループに詰まっています
私はこのスクリプトを実行するたびに、コードに関するデバッグ/エラー/警告は表示されませんが、ファイルには何も書き込まれず、書き込みも行われません。
ここに私が書いたコードがありますが、どんな助けもありがとうございます。
#code, where f = text to be processed, d = text file to be written to
f = open("test.txt", "r+")
f = f.read()
fList = list(f)
limit = len(fList)
#Set location of result
d = open("noided.txt", "r+")
i, j, k = [0, 0, 0]
#Main loop
#While there are characters left to be processed
while i < limit:
#Skip the first 4 characters
if i < 4:
#print i, fList[i]
i += 1
else:
#print i, fList[i]
currentChar = fList[i]
count = 0
prevChars = [fList[i-1],fList[i-2],fList[i-3]]
nextChars = fList[i:i + 3]
if currentChar.isupper():
i += 1
else:
while k < 3:
if prevChars[k].isupper() and nextChars[k].isupper():
count += 1
k += 1
elif count == 3:
print currentChar
d.write(currentChar)
i += 1
else:
i += 1
ここで変数は 'i' 、 'limit'と' k'は初期化されていますか?また、コードのインデントが正しくないように見える –
インデントを修正してください。 'else'はおそらく' if'に属し、 'while'には属しません(これも可能ですが、このコンテキストではあまりありません)。また、 '&'はビット単位です。それが動作している間は、ここでも、代わりに 'と'を使用します。 –
これはインデントには悪いものでしたが、気づいていなかったのですが、私のエディタで最初の質問に答えるようなものではなく、すべての変数が初期化されていました。 –