Что делать, когда функция main() не вызывает/не выполняет другие функции?

#python #python-3.x

Вопрос:

Я создал функцию main (), а также 3 других, и я пытаюсь заставить остальные 3 быть выполненными в main()

У меня это работало, а затем я испортил его в самом конце, поэтому я прокомментировал его, так как он не вызывает 3 другие функции.

 # The program displays the letter grade and associated message for each exam score
#   and the average exam score
# The program will not contain any repeated code and have a minimum of two functions besides Main.

def main():
  # ask user to enter test scores
    score = int(input("Enter your test scores separate by spaces, no commas: "))

# display test score
def showLetters(num, letterGrade):
    print(f"{num:.1f} is  an {letterGrade}n")

# display score message
def examScores(num):
    if 90 <= num <= 100:
        letterGrade = "A"
        print("Excellent Work")
    elif 80 <= num <= 89:
        letterGrade = "B"
        print("Nice job")
    elif 70 <= num <= 79:
        letterGrade = "C"
        print("Not bad")
    elif 60 <= num <= 69:
        letterGrade = "D"
        print("Room for improvement")
    else:
        letterGrade = "F"
        print("Go back and review")
    return letterGrade


# calculate average of all scores entered by user
def calcAverages(grades):
    numbers = scores.split()
    for i in range(len(numbers)):
        numbers[i] = int(numbers[i])
    print("Average exam score: ", sum(numbers) / len(numbers))

    # ask user to repeat or quit
    answer = str(input('Please enter "y" to run program again or "n" to exit: '))
    if answer.lower() == 'n':
        print('Thank you for using! Goodbye!')
        sys.exit()
    elif answer.lower() == 'y':
        main()



# ??? = main()
# for n in ????? :
#    showLetters(n, examScores(n, calcAverages(????)))
 

Комментарии:

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

2. Вы имеете в виду что-то вроде текстового файла? Я не думаю, что мы зашли так далеко в курсе, чтобы я мог использовать этот метод.

3. вы можете использовать объект словаря для сохранения сведений . например {1: {"firstname":"xyz", "lastname":"abc", "class1":'a'}, 2 :{"firstname":"aaA", "lastname":eqeq"..}} , как это

Ответ №1:

Я внес незначительные изменения в вашу программу, и теперь у вас есть средние значения.

Я выделил только те строки, которые нуждаются в дополнении.

 counter = 0  # tracks the number of times the function is called

#added the below 2 lines after counter
sumCredit = 0 #tracks the sum credit for all the students
sumStudyHrs = 0 #track the sum of the study hours for all the students

def myfunction():
    global counter  # tracks the number of times the function is called

    #added two more global variables to keep track of the averages

    global sumCredit #track the sum credit
    global sumStudyHrs #track the sum study hours
 

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

     print("Study hours: "   str(sumHours))

    #added the below 2 lines after your print statements
    sumCredit  = classes
    sumStudyHrs  = sumHours

    # Ask user if they want to end or restart
 

Теперь вам нужно использовать эту информацию для своих расчетов.

При выводе среднего значения используйте приведенные выше переменные для вычисления среднего значения.

         print("Total Students: "   str(counter))  # tracks the number of times the function is called

        #modified your average credits and average study with correct numerator

        print("Average Credits: "   str(sumCredit / counter)) #computer average credits
        print("Average Study Hours: "   str(sumStudyHrs / counter)) #compute average study hours

        print('Thank you for using! Goodbye!')
 

Это должно дать вам желаемые результаты.

Дайте мне знать, если вам понадобится полный код.

Комментарии:

1. ты спас мне жизнь! спасибо, спасибо, спасибо тебе —- единственное, что я изменил, чтобы математика работала, было sumCredit = creditSum