Застрял во вложенном цикле - PullRequest
0 голосов
/ 10 марта 2020

Ниже приведен код моей программы. Я пытаюсь заставить это спросить пользователя, хотят ли они ввести набор результатов тестов. Если да, программа запускается. Получает результаты тестов. Когда пользователь вводит данные в конце, l oop заканчивается, добавляет результаты и затем выдает среднее значение. Затем предполагается спросить, хочет ли пользователь добавить еще один набор результатов тестов. Если да, он запускается снова. Если нет, он останавливается и имеет заключительное заявление.

У меня второй, пока l oop внутри основного, а l oop. Когда я запускаю код, он даже не запускает основной, пока l oop. Ниже показано, что я вижу, когда отвечаю у (да) на вопрос.

Enter test scores
Enter end to end input
======================
Get entries for another set of scores?  y
Enter your information below
Get entries for another set of scores?  

Не запускается исходный цикл while; который позволяет пользователю вводить баллы, нажимать «конец» по окончании, вычисляет баллы, выдает среднее значение и, наконец, спрашивает пользователя, хотят ли они ввести другой набор тестовых баллов.

Есть предложения? У меня есть полный код, как у меня в PyCharm ниже.

print("The Test Scores application")
print()
print("Enter test scores")
print("Enter end to end input")
print("======================")

# initialize variables
counter = 0
score_total = 0
test_score = 0
get_entries = 'y'
while test_score != 999:
    while True:
        get_entries = input("Get entries for another set of scores?  ")
        if get_entries == 'y':
            print("Enter your information below")
        else:
            print("Thank you for using the Test Scores application. Goodbye!")
    test_score = input("Enter test score: ")

    if test_score == 'end':
        break
    elif (int(test_score) >= 0) and (int(test_score) <= 100):
        score_total += int(test_score)
        counter += 1
    elif test_score == 999:
        break
    else:
        print("Test score must be from 0 through 100. Score discarded. Try again.")

    # calculate average score
average_score = round(score_total / counter)

# format and display the result
print("======================")
print("Total Score:", score_total,
      "\nAverage Score:", average_score)

1 Ответ

0 голосов
/ 10 марта 2020

Ваш внутренний l oop имеет слишком большой отступ. while True: имеет 5 пробелов перед ним, а все остальное имеет отступ 4 пробела. Кроме того, пока мы говорим об отступе, у вас есть break, который тоже имеет неправильный отступ.

Чтобы исправить это:

  • удалите один пробел до while True:
  • добавьте еще три пробела перед break
  • для бонусных очков, также удалите один пробел перед каждой из 5 строк внутри вложенного while, чтобы они отступали на 8 или 12 пробелов .

Подсказка для обновленного вопроса:

Посмотрите на реализацию вашего внутреннего l oop. При каких обстоятельствах программа выйдет из этого l oop, чтобы перейти к test_score = ...?

...