Как иметь переменное количество пользовательских входов на основе первого пользовательского ввода

Я создал программу, которая вычисляет среднее значение студента, и я хочу, чтобы входные данные создавались на основе пользовательского ввода, например: если пользователь вводит 5, он создает 5 входных данных.

print('Average of students')

def student_average():
    while True:
        try:
            # I want to create inputs depending on the user's input in the following question:
            number_of_qualifications = int(input('What is the number of qualifications?: '))
            qualification_1 = float(input('What is the first qualification?: '))
            qualification_2 = float(input('What is the second qualification?: '))
            qualification_3 = float(input('What is the third qualification?: '))
            qualification_4 = float(input('What is the fourth qualification?: '))
            break
        except:
            print('This is not an option')
    sum = (qualification_1 + qualification_2 + qualification_3 + qualification_4)
    average = (sum / 4)
    print(average)

student_average()

Вы можете создать цикл для введенных number_of_qualifications и сохранить квалификации в массиве.

HNMN3 20.03.2022 03:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вам нужно использовать петлю. Я удалил try/except, вы можете добавить его обратно, если хотите.

def student_average():
    number_of_qualifications = int(input('What is the number of qualifications?: '))
    sumx = 0
    for _ in range(number_of_qualifications):
        sumx += float(input('What is the next qualification?: '))
    return sumx / number_of_qualifications

print(student_average())

могу я узнать, как вы реализуете try-кроме цикла for? Если возникает исключение, цикл все равно увеличивается на 1, поэтому 1 точка данных теряется, поэтому я не могу решить эту проблему.

Gold79 20.03.2022 04:14

Вы можете поместить try/except внутрь цикла for.

Tim Roberts 20.03.2022 04:49

не могли бы вы показать мне, как, пожалуйста? Попробуйте с 5 входами: 10, 20, 30, аа (исключение), 40, 50. Среднее должно быть 30, но я не могу ввести последний (50)

Gold79 20.03.2022 05:17
while True/try/input/break/except/print.
Tim Roberts 20.03.2022 06:51

это решение - цикл while, а не цикл for. Я думаю, что это возможно только в цикле while

Gold79 20.03.2022 07:47

Я изменил ваши коды, поэтому функция try-except сохранена.

def student_average():
    total, c = 0,0
    number_of_qualifications = int(input('What is the number of qualifications?: '))
    while True:
        try:
            # I want to create inputs depending on the user's input in the following question:
            total += float(input(f'{c+1} What is the qualification?: '))
            c += 1
            if c == number_of_qualifications:
                break
        except:
            print('This is not an option')
    average = (total / number_of_qualifications)
    print(average)
    
print('Average of students')
student_average()

Выход:

Average of students
What is the number of qualifications?:  3
1 What is the qualification?:  4
2 What is the qualification?:  5
3 What is the qualification?:  a
This is not an option
3 What is the qualification?:  6
5.0

Пожалуйста, не используйте «сумму» в качестве переменной, потому что это зарезервированное слово Python. Если он использовался ранее, вам необходимо перезапустить ядро.

def student_average():
    cnt = 1
    total_list = []
    number_of_qualifications = int(input('What is the number of qualifications?: '))
    while len(total_list) < number_of_qualifications:
        try:
            # I want to create inputs depending on the user's input in the following question:
            total_list.append(float(input(f'{cnt}. What is the qualification?: ')))
            cnt += 1
        except:
            print('This is not an option')
    return (sum(total_list) / number_of_qualifications)
    
print('Average of students =', student_average())

Выход

What is the number of qualifications?:  5
1. What is the qualification?:  10
2. What is the qualification?:  20
3. What is the qualification?:  30
4. What is the qualification?:  aa
This is not an option
4. What is the qualification?:  40
5. What is the qualification?:  50
Average of students = 30.0

Другие вопросы по теме