Как исключить последнюю строку пользовательского ввода? - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь получить пользовательские данные для записи файла во время выполнения. Но это также пишет разделитель (-99). Есть ли какой-нибудь более простой код, чем этот, без включения разделителя?

В прошлом я пробовал использовать Python 3 в лаборатории Jupyter.

lines=input("Enter the contents:")
while(lines!="-99"):
    lines=input()
    file.write(lines)
    file.write("\n")
file.close()

Я ожидаю вывода пользовательского содержимогодо -99 (то есть, исключая -99), но фактическим выводом является пользовательское содержимое с -99.

Пример вывода

Enter the contents:
 Hi
 Hello
 Welcome to python lab
-99

Inмой выходной файл:

 Hi
 Hello
 Welcome to python lab
-99

Ответы [ 3 ]

2 голосов
/ 09 ноября 2019

Просто переписайте цикл while, чтобы перед записью в файл произошел разрыв.

print("Enter the contents:")
with open(file_name, "w") as file:
    while True:
        line = input()
        if line == "-99":
            break
        print(line, file=file)

Я сделал некоторые другие улучшения в коде.

Чтобы упростить цикл

Вы можете использовать fileinput:

for line in fileinput.input():
    if line == "-99":
        break
    print(line, file=file)

В Python 3.8 вы сможете использовать оператор моржа:

while (line := input()) != "-99":
    print(line, file=file)
1 голос
/ 09 ноября 2019

Попробуйте,

print("Enter the contents: ")
with open(file_name, "a") as file:
    while True:
        data = input()
        if data == '-99':
            break
        else:
            file.write(data+'\n')

При этом -99 не сохранится в вашем файле.

0 голосов
/ 09 ноября 2019

Вот решение, которое не записывает -99, но заканчивается на нем:

filename= 'test.out' 
def contents(): 
  return input ("Enter the Contents: ") 
getcontents=contents() 
with open (filename, 'w') as f: 
   while getcontents != '-99': 
      f.write(getcontents + "\n") 
      getcontents=contents() 
...