0

別の行にEOFを単独で入力するまで、ユーザーにテキストブロックを入力するように求めています。その後、プログラムは彼/彼女にメニューを提示する必要があります。オプション 1 に移動すると、以前に入力したすべてではなく、EOF のみが出力されます。どうしてこれなの?

テキストのブロックとして「こんにちは、私はパイが好きです」と入力したとしましょう。EOF と入力してメニューに移動し、オプション 1 を入力します。「Hi I like pie」がポップアップすることを期待していますが、EOF の文字しか表示されません。これを修正するにはどうすればよいですか? Python ファイルを「フィード」するにはどうすればよいですか?

#Prompt the user to enter a block of text.
done = False
while(done == False):
    textInput = input()
    if textInput == "EOF":
        break

#Prompt the user to select an option from the Text Analyzer Menu.
print("Welcome to the Text Analyzer Menu! Select an option by typing a number"
    "\n1. shortest word"
    "\n2. longest word"
    "\n3. most common word"
    "\n4. left-column secret message!"
    "\n5. fifth-words secret message!"
    "\n6. word count"
    "\n7. quit")

option = 0

while option !=7:
    option = int(input())

    if option == 1:
        print(textInput)
4

4 に答える 4

0

設定すると

textInput = input()

古い入力を破棄します。すべての入力を保持したい場合は、リストを作成する必要があります。

input_list = []
text_input = None
while text_input != "EOF":
    text_input = input()
    input_list.append(text_input)
于 2013-07-14T21:51:33.473 に答える
0

while ループに入力されたすべての行を入力時に保存する必要があります。ユーザーが新しい行を入力するたびに、変数 textInput が上書きされます。次のように、テキスト ファイルへのテキストの保存を使用できます。

writer = open("textfile.txt" , "w")
writer.write(textInput + "\n")

while ループの if の後に、これを elif ステートメントとして挿入します。"\n" は改行コマンドで、テキストが読み取られたときに表示されませんが、コンピューターに改行を開始するように指示します。

このファイルを読み取るには、次のコードを使用します。

reader = open("textfile.txt" , "r")
print(reader.readline()) #line 1
print(reader.readline()) #line 2

プログラムに必要なさまざまな方法でファイルを読み取るためのさまざまな方法が他にもあり、自分で調べることができます。

于 2013-07-14T21:57:39.680 に答える
0

その理由は、あなたのwhileループでは、 textInputis equal toEOFになるまでループするため、印刷するだけだからですEOF

次のようなことを試すことができます (nextInput変数を使用して次の入力を「プレビュー」します)。

#Prompt the user to enter a block of text.
done = False
nextInput = ""
while(done == False):
    nextInput= input()
    if nextInput== "EOF":
        break
    else:
        textInput += nextInput
于 2013-07-14T21:49:07.060 に答える
0

ユーザーが新しい行を入力するたびに、textInput 変数が上書きされます。

あなたができる

textInput = ''
done = False
while(done == False):
    input = input()
    if input == "EOF":
        break
    textInput += input

doneまた、変数と break ステートメントの両方を使用する必要はありません。あなたはどちらかを行うことができます

done = False
while(done == False):
    textInput += input()
    if textInput == "EOF":
        done = True

また

while True:
    textInput += input()
    if textInput == "EOF":
        break
于 2013-07-14T21:53:15.300 に答える