"Как читать строки и числа из одного файла с помощью цикла while в python 3?" - PullRequest
0 голосов
/ 26 января 2019

У меня проблемы с чтением строк и чисел из файла с циклом while. В текстовом файле есть мнимые имена с указанием их возраста и количества братьев и сестер. Я хочу прочитать имена, возраст и количество братьев и сестер в текстовом файле с циклом while. Если вам нужно больше информации для решения проблемы, дайте мне знать. Помощь очень ценится

outfile = open('practice.txt', 'w')

def main():

    print('this program will print the name and age of a person')

    details()


def details():

    choice = input('Would you like to enter your name, age, and number of siblings? Enter Y for yes and N for no: ')

    while choice != 'N' and choice != 'n':

        name = input('Enter your name: ')
        age = input('Enter your age: ')
        siblings = input('Enter the number of siblings: ')

        outfile.write(name + '\n')
        outfile.write(str(age + '\n'))
        outfile.write(str(siblings + '\n'))

        choice = input('Would you like to continue? Enter Y for yes and N for no: ')

    outfile.close()

main()

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

infile = open('practice.txt', 'r')

line = infile.readline()


while line != '':

    line = infile.readline()
    age = int(line)

infile.close()

Вот так выглядит мой файл данных. НИЖЕ

joe
56
2
john
27
5
james
14
3

Ответы [ 3 ]

0 голосов
/ 26 января 2019

Это почти верно, но несколько деталей:

  1. Открывать infile не как readline(), а только как "", иначе первая строка будет пропущена.
  2. Не проверяйте choice на «N» и «n», просто сделайте что-то вроде if choice.lower() == "n":.
  3. Также прочитайте братьев и сестер или сделайте что-нибудь, чтобы пропустить их, иначе это будет путать код, так как «2» будет читаться как строка, «Джон» будет читаться как возраст, но int («Джон») выплюнет ошибку
0 голосов
/ 26 января 2019

Поскольку каждый человек занимает 3 строки в файле, вам нужно читать 3 строки каждый раз в цикле.

Вы также должны использовать rstrip(), чтобы удалить переводы строк в конце каждой строки.

line = infile.readline()
while line:
    name = line.rstrip()
    line = infile.readline()
    age = int(line.rstrip())
    line = infile.readline()
    siblings = int(line.rstrip())
    # ...
    # do something with `name`, `age`, and `siblings`
    # ...

    line = infile.readline()
0 голосов
/ 26 января 2019

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

with open('practice.txt', 'r') as infile:

    while True:       
        name = infile.readline()
        if not name:
            break
        age = int(infile.readline())
        siblings = int(infile.readline())
...