Использование цикла while для записи пользовательских данных в файл - PullRequest
0 голосов
/ 10 мая 2019

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

Мне удалось получить его с циклом for, но я специально искал цикл while. Ниже мой код без цикла на данный момент.

filename = input ("visitor_log.txt: ");
with open("visitor_log.txt", "w") as f:
    f.write(input("Please write your name:"));

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

Ответы [ 4 ]

1 голос
/ 10 мая 2019

У цикла while есть условие, и цикл будет продолжать выполняться, пока условие выполняется.

while some_condition:
    //Do some stuff
    //Change your condition if necessary

Пока условие some_condition оценивается как True, код внутри области действия вашего цикла будет продолжать выполняться. Если ваше условие никогда не станет ложным, то ваш цикл будет выполняться вечно.

Что вам нужно сделать, это решить условие, которое вы будете использовать для продолжения циклического прохождения кода, а затем при необходимости измените это условие на основе вашего ввода. Вот мой пример, который будет читать имена, пока не будет введено слово «END».

with open("visitor.txt", "a") as f:
    accept_more_visitors = True
    while accept_more_visitors:
        input_value = input("Please write your name, or 'END' if you are done.")
        if input_value == "END":
            break
        f.write(input_value)

Еще одно ключевое отличие состоит в том, что вы открываете файл с флагом "w", который перезапишет файл. Возможно, вам нужен флаг «а», который будет добавлен в конец.

0 голосов
/ 10 мая 2019

попробуйте это:

filename = input ("visitor_log.txt: ")
with open("visitor_log.txt", "a") as f:
    i=0
    while (i<5):
        f.write(input("Please write your name:"))
        f.write('\n')
        i +=1
0 голосов
/ 10 мая 2019

Это должно работать

names = []
while True:
    name = input ('Enter your name: ')
    names.append(name)
    if input ('Hit enter to add another name, or type done to continue') == 'done':
        break

towrite =''
with open("visitor_log.txt", "w") as f: 
        for name in names:
            towrite+= name + "\n"
         f.write(towrite)

Что это делает, это позволяет пользователю вводить столько имен, сколько он хочет, добавляет их в список и записывает имена в visitor_log.txt.

Имена хранятся в списке имен, так что вы можете перебирать этот список и делать с ним все, что вам нравится.

0 голосов
/ 10 мая 2019
# filename = input ("visitor_log.txt: ")

with open("./visitor_log.txt", "w") as f:
    text = ''

    while text != 'exit\n':
        text = raw_input("Please write your name:")
        print(text)
        text = str(text) + "\n"
        f.write(text)

raw_input лучше input для текста

...