我试图提示用户输入一个文本块,直到他/她在一个单独的行上单独输入EOF。之后,程序应该向他/她提供菜单。当我转到选项1时,它只打印出EOF而不是之前输入的所有内容。这是为什么?
假设我输入“嗨我喜欢馅饼”作为我的文本块。我输入EOF前往菜单并输入选项1.我希望弹出“我喜欢馅饼”但只有字母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)
答案 0 :(得分:0)
原因是,在while
循环中,您循环直到textInput
等于EOF
,因此您只需打印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
答案 1 :(得分:0)
设置
时textInput = input()
你扔掉旧的输入。如果你想保留所有输入,你应该列出一个清单:
input_list = []
text_input = None
while text_input != "EOF":
text_input = input()
input_list.append(text_input)
答案 2 :(得分: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
答案 3 :(得分:0)
您需要在输入时保存while循环中输入的每一行。每次用户键入新行时,都会覆盖变量textInput。您可以将商店文本用于以下文本文件:
writer = open("textfile.txt" , "w")
writer.write(textInput + "\n")
在while循环中将if作为ifif语句插入。 “\ n”是一个新的行命令,在读取文本时不会显示,但会告诉计算机开始换行。
要阅读此文件,请使用以下代码:
reader = open("textfile.txt" , "r")
print(reader.readline()) #line 1
print(reader.readline()) #line 2
还有其他各种方法可以以不同的方式为您的程序读取文件,您可以自己研究。