2013-07-14 2 views
0

Я пытаюсь предложить пользователю ввести блок текста, пока он сам не наберет EOF на отдельной строке. После этого программа должна представить ему/ей меню. Когда я перехожу к Варианту 1, он печатает только EOF, а не все, что было напечатано ранее. Почему это?Python: как сохранить ввод пользовательского текста в файл?

Предположим, я напечатал «Привет, я люблю пирог» в качестве своего блока текста. Я печатаю 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

Причина заключается в том, что в вашем 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 
+0

Благодарим вас за быстрый ответ. – user2581724

+0

Без проблем! Надеюсь, поможет! – jh314

0

При установке

textInput = input() 

Вы выбрасываете старый вход. Если вы хотите сохранить все входные данные, вы должны составить список:

input_list = [] 
text_input = None 
while text_input != "EOF": 
    text_input = input() 
    input_list.append(text_input) 
0

Каждый раз, когда пользователь печатает новую строку в вашей переменной TextInput получает перезаписаны.

Вы могли бы сделать

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

Кроме того, вам не нужно использовать одновременно done переменную и оператор разрыва. вы можете либо сделать

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

или

while True: 
    textInput += input() 
    if textInput == "EOF": 
     break 
0

Вы должны сохранить каждую строку набранный в цикле в то время как он набран. Каждый раз, когда пользователь вводит новую строку, переменная textInput перезаписывается. Вы можете использовать текст магазина в текстовый файл, как это:

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

Вставьте это как Элиф заявление после того, как ваш, если в то время цикла. «\ N» - это новая строка, которая не отображается при чтении текста, но сообщает компьютеру о запуске новой строки.

Для того, чтобы прочитать этот файл, используйте этот код:

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

Существуют различные другие способы чтения файла различные способов, которые вы хотите для вас программы, которые вы можете исследовать самостоятельно.

Смежные вопросы