нужна помощь по задаче по классам с использованием try - except
Нужно создать программу, в которой я ввожу свои данные через консоль, и заполняю массив пользователей.
Есть класс пользователей User
str name
str surname
int age
А также конструктор для всех параметров.
В главном классе, то есть основной части, должен быть список пользователей, с максимальным размером 5 человек. Моя программа должна запрашивать пользователя ввести этих 5 пользователей через консоль.
Однако, если я во время введения возраста введу неверные данные (не целое число), то программа должна автоматом ввести число 0 в поле возраста и добавить объект в список.
В конце ввода программа должна вывести среднее значение возраста в списке.
вот мой код:
class User:
name = ""
surname = ""
age = 0
def __init__(self, name, surname, age):
self.name = name
self.surname = surname
self.age = age
def result(self):
count = 0
sum_age = 0
self.average = 0
for i in users:
sum_age += i.age
count += 1
self.average = sum_age / count
print(self.average)
print('Input 5 users:')
u1 = User(input('Name: '), input('Surname: '), input('Age: '))
u2 = User(input('Name: '), input('Surname: '), input('Age: '))
u3 = User(input('Name: '), input('Surname: '), input('Age: '))
u4 = User(input('Name: '), input('Surname: '), input('Age: '))
u5 = User(input('Name: '), input('Surname: '), input('Age: '))
users = [u1, u2, u3, u4, u5]
for i in users:
try:
except:
for j in users:
j.result()
я не могу понять как прописать в try except это условие "Однако, если я во время введения возраста введу неверные данные (не целое число), то программа должна автоматом ввести число 0 в поле возраста и добавить объект в список."
и почему у меня не выводится средний возраст
Ответы (1 шт):
Вы немного перемудрили. проверять возраст лучше сразу при создании объекта. Вычисление среднего возраста, по сути, не должно быть методом объекта
class User:
def __init__(self, name, surname, age):
self.name = name
self.surname = surname
try:
self.age = int(age)
except ValueError:
self.age = 0
print('Input 5 users:')
u1 = User(input('Name: '), input('Surname: '), input('Age: '))
u2 = User(input('Name: '), input('Surname: '), input('Age: '))
u3 = User(input('Name: '), input('Surname: '), input('Age: '))
u4 = User(input('Name: '), input('Surname: '), input('Age: '))
u5 = User(input('Name: '), input('Surname: '), input('Age: '))
users = [u1, u2, u3, u4, u5]
sum_age = 0
for u in users:
sum_age += u.age
print(sum_age/len(users))
Ну и ввод данных можете сделать попроще, чтоб не дублировать код
count = 5
print(f'Input {count} users:')
users = [User(input('Name: '), input('Surname: '), input('Age: ')) for _ in range(count)]