@mikki20041

Сложить и вывести результат?

Всем привет, проблема программы в том, что она не складывает баллы, каждый метод выдаёт конкретное количество баллов за конкретный ответ, как сделать так, чтобы все баллы складывались?
class Client():
    def __init__(self, full_name = None, age = 0, gender = None, profit = 0, credit_history = 0, credit_amount = 0, points = 0):
        self.full_name = full_name
        self.age = age
        self.gender = gender
        self.profit = profit
        self.credit_history = credit_history
        self.credit_amount = credit_amount
        self.points = points
    
    def age_conditions(self):
        if self.age <= 40:
            self.points += 10
        else:
            self.points += 20
        return self.points
    
    def gender_conditions(self):
        if self.gender.upper() == "Ж":
            self.points += 10
        return self.points
    
    def profit_conditions(self):
        if self.profit <= 40000:
            self.points += 10
        else:
            self.points += 20
        return self.points
    
    def credit_history_conditions(self):
        if self.credit_history.upper() or self.credit_history.lower() == "Да":
            self.points += 20
        return self.points
    
    def credit_amount_conditions(self):
        if self.credit_amount >= 20000:
            self.points += 20
        else:
            self.points += 10
        return self.points
    
    def credit_result(self):
        if self.points <= 50:
            print(f'Кредит успешно оформлен! {self.points}')
        else:
            print(f'В кредите отказано, сумма ваших баллов {self.points}')
        return self.points



bank_client = Client()
bank_client = Client(full_name = input('Введите ваше ФИО: '))
bank_client = Client(age = int(input('Введите ваш возраст: ')))
bank_client.age_conditions()
print(bank_client.points)
bank_client = Client(gender = input('Введите ваш пол (М/Ж): '))
bank_client.gender_conditions()
print(bank_client.points)
bank_client = Client(profit = int(input('Введите ваш ежемесячный доход: ')))
bank_client.profit_conditions()
print(bank_client.points)
bank_client = Client(credit_history = input('Имеется ли у вас кредитная история: '))
bank_client.credit_history_conditions()
print(bank_client.points)
bank_client = Client(credit_amount = int(input('Сумма кредита: ')))
bank_client.credit_amount_conditions()
print(bank_client.points)
bank_client.credit_result()
  • Вопрос задан
  • 164 просмотра
Решения вопроса 2
MinTnt
@MinTnt
Ну что сказать... Даже не знаю с чего начать... С того, что вы каждый раз перезаписываете одну и ту же переменную, начиная так сказать с нуля или с...

Ладно, решения есть два.
1) Задавать нужные данные не через перезапись переменной и вызовом класса, а посредством bank_client.age =, bank_client.full_name =,
т.е.
bank_client = Client()
bank_client.full_name = input('Введите ваше ФИО: ')
bank_client.age = int(input('Введите ваш возраст: '))
bank_client.age_conditions()
print(bank_client.points)
bank_client.gender = input('Введите ваш пол (М/Ж): ')
bank_client.gender_conditions()
print(bank_client.points)
bank_client.profit = int(input('Введите ваш ежемесячный доход: '))
bank_client.profit_conditions()
print(bank_client.points)
bank_client.credit_history = input('Имеется ли у вас кредитная история: ')
bank_client.credit_history_conditions()
print(bank_client.points)
bank_client.credit_amount = int(input('Сумма кредита: '))
bank_client.credit_amount_conditions()
print(bank_client.points)
bank_client.credit_result()

2) В каждом следующем перезаписывании переменной, добавлять полученные из предыдущего вызова данные. Ну или же к примеру просто передавать каждой следующей функции points. Но как по мне, это лишняя работа
bank_client = Client()
bank_client = Client(full_name = input('Введите ваше ФИО: '))
bank_client = Client(age = int(input('Введите ваш возраст: ')), full_name=bank_client.full_name)
bank_client.age_conditions()
print(bank_client.points)
bank_client = Client(gender = input('Введите ваш пол (М/Ж): '), full_name=bank_client.full_name, age=bank_client.age, points=bank_client.points)
bank_client.gender_conditions()
print(bank_client.points)
bank_client = Client(profit = int(input('Введите ваш ежемесячный доход: ')),full_name=bank_client.full_name, age=bank_client.age, gender = bank_client.gender, points=bank_client.points)
bank_client.profit_conditions()
print(bank_client.points)
bank_client = Client(credit_history = input('Имеется ли у вас кредитная история: '), full_name=bank_client.full_name, age=bank_client.age, gender = bank_client.gender, profit = bank_client.profit, points=bank_client.points)
bank_client.credit_history_conditions()
print(bank_client.points)
bank_client = Client(credit_amount = int(input('Сумма кредита: ')), full_name=bank_client.full_name, age=bank_client.age, gender = bank_client.gender, profit = bank_client.profit, credit_history=bank_client.credit_history, points=bank_client.points)
bank_client.credit_amount_conditions()
print(bank_client.points)
bank_client.credit_result()


P.s. Хоть и видно что первый варянт решения лучше. Но просто я решил, что раз автор хочет через перезапись переменной, не буду уж ему отказывать.
Ответ написан
Комментировать
Sadatake
@Sadatake
Вы опредили что по умполчанию "full_name = None, age = 0, gender = None, profit = 0, credit_history = 0, credit_amount = 0, points = 0"
Это удобно, если в класс поступает сразу все данные которые необходимы, и только если что-то не было введёно, тогда будет значение 0. В ином случае, лучше так не делать.
И при вызыве этого класса, все ваши данные перезаписываются на None или 0. Как и было написано выше, нужно обращаться не к самому классу, а не посредственно к атрибутам экземпляра :3
Есть вот этот сайт, на нём можно проверить, что куда сохраняется в визуально понятном формате.
Кстати, заметил что в методе credit_history_conditions применяется lower и upper, однако сравнивается с "Да", что ни то, ни другое :D
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 18:08
1000 руб./за проект
24 нояб. 2024, в 17:52
3000 руб./за проект
24 нояб. 2024, в 16:14
1000 руб./за проект