2017-02-18 6 views
0

У меня возникли трудности с запуском этой программы без создания логической ошибки. Мне было интересно, может ли кто-нибудь объяснить мне, что случилось. Мой код для файла РАБОТЫ:Чтение файла при запуске цикла?

def main(): 
    myfile = open('tests.txt','w') 
    print('Enter six tests and scores or Enter to exit') 
    print('--------------------------') #I added this feature to make the code 
    #more structured 
    testName = input('Enter test name: ') 
    while testName != '': 
     score = int(input('Enter % score of this test: ')) 
     myfile.write(str(score) + '\n') 
     testName = input('Enter test name: ') 
     myfile.write(testName + '\n') 
    myfile.close() 
    print('File was created successfully') 
main() 

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

def main(): 
    myfile = open('tests.txt','r') 
    print('Reading six tests and scores') 
    print('Test\t    Score') 
    print('----------------------------') 
    test_score = 0 
    counter = 0 #for number of tests 
    line = myfile.readline() 
    while line != '': 
     name = line.rstrip('\n') 
     score = int(myfile.readline()) 
     test_score += score 
     print(name, score) 
     line = myfile.readline() 
     counter += 1 
    myfile.close() 
    average = test_score/ counter 
    print('Average is',format(average,'.1f')) 
main() 

ввода/вывода для первой программы должны быть
Ввод шесть тестов и оценки Введите имя теста объекты Введите% забить на этом тесте 88 Введите имя теста петель Введите% баллы на этом тесте 95 Введите название теста выбор Введите% баллы на этом тесте 86 Введите переменное имя теста Введите% баллы на этом тесте 82 Введите название теста файлы Войти % забить на этом тесте 100 Введите функции тестирования имя Введите% баллов на этом тесте 80 Файл был успешно создан

выход для второй программы, которая считывает файл должен быть:

Чтение шесть тестов и оценки TEST SCORE объекты 88 петли 95 отборов 86 переменные 82 файлов 100 функции 80 среднего 88,5

+0

Какой результат вы получаете и что такое выход желания? Покажите нам, как вы знаете, есть логическая ошибка – SaggingRufus

+0

Сообщение об ошибке - Traceback (последний последний звонок): Файл «C: \ Users \ ab \ Desktop \ chapter 6 \ program 6_2.py», строка 19, в main() Файл «C: \ Users \ ab \ Desktop \ chapter 6 \ program 6_2.py», строка 11, в основном score = int (myfile.readline()) ValueError: недействительный литерал для int() с базой 10: '\ n' – ABerrio

+0

Вход для первого файла должен быть - ввод шести тестов и оценок Введите объекты с именем теста Введите% score по этому тесту 88 Введите имя теста петель Введите% баллы на этом тесте 95 Введите название теста выбор Введите% баллы на этом тесте 86 Введите переменное имя теста Введите% баллы на этом тесте 82 Введите файлы имя теста Введите% баллы на этом тесте 100 Введите имя функции тестирования Наберите этот счет 80 Файл создан успешно – ABerrio

ответ

0

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

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

testName = input('Enter test name: ') 
    myfile.write(testName) 
    while testName != '': 
     score = int(input('Enter % score of this test: ')) 
     myfile.write('\n' + str(score)) 
     testName = input('Enter test name: ') 
     myfile.write('\n' + testName) 
    myfile.close() 
    print('File was created successfully') 
+0

Спасибо за ваш ответ. По какой-то причине вторая программа все еще дает мне ошибку. Я добавил к нему изменения. Я очень новичок в программировании. – ABerrio

+0

Это странно. Когда я запускаю обе функции с внесенными изменениями, я не получаю ошибок. Чтобы быть уверенным, что не было недоразумений, вы заменили код после второй «печати» в своей первой функции main() кодом, который я разместил, правильно? – MalloyDelacroix

+0

Добавлено редактирование, которое вы рекомендовали, и я удивлен, что он внес огромный вклад. Программа работает красиво и прекрасно работает! Большое спасибо. Есть ли способ отправить личное сообщение на этом сайте? Мне было интересно, могу ли я задать вам пару вопросов. Я хочу улучшить свои способности кодирования. – ABerrio

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

  • Нет связанных вопросов^_^