

**前提・実現したいこと**  
pythonで借金の返済額期間を求めるプログラムを作っています。  
練習として下記のプログラムをclassを使って作って行こうと思ったのですが  
関数内で変更した変数を関数外で使いたいと思ったのですが使えず、  
変数内の値が更新されません。どこが悪いのか教えていただきたいです。

[code]

    debt = int(input('あなたの借金を入力してね(円)'))
    Interest = float(input('年利率(%)> '))
    Repayment_amount = int(input('月々の返済額'))
    total = 0
    month = 0
    
    while debt > Repayment_amount :
        debt = debt * (1 + Interest / 12 / 100)
        debt -= Repayment_amount
        total += Repayment_amount
        month += 1
        print(month,'月: 返済額',Repayment_amount,'円','残り',debt)
    
    debt = debt * (1 + Interest / 12 / 100)
    all = int(total + debt)
    debt = int(debt)
    print(month + 1,'月: 返済額',str(debt),'円これで完済。返済総額：',str(all),'円')
    
    
[/code]

うまく更新されないプログラムがこれです↓

[code]

    class Calculation():  
        def __init__(self,debt,Repayment_amount,Interest,total,month):
            self.debt = debt
            self.Interest = Interest
            self.Repayment_amount = Repayment_amount
            self.total = total 
            self.month = month
    
    
        def tukiduki(self,debt,Repayment_amount,Interest,total,month):
            while debt > Repayment_amount :
                
                debt = debt * (1 + Interest / 12 / 100)
                debt -= Repayment_amount
                total = total + Repayment_amount
                month = month + 1
                print(month,'月: 返済額',Repayment_amount,'円','残り',debt)
                
    debt = int(input('あなたの借金を入力してね(円)'))
    Interest = float(input('年利率(%)> '))
    Repayment_amount = int(input('月々の返済額'))
    total = 0
    month = 0
    
    #インスタンス変数を作る
    c1 = Calculation(debt,Repayment_amount,Interest,total,month)
    
    #月々の借金返済を繰り返し処理で行う
    c1.tukiduki(debt,Repayment_amount,Interest,total,month)
    
    #最後の月の返済額の計算
    c = c1.debt * (1 + c1.Interest / 12 / 100)
    #返済総額を求める
    all = int(c1.total + c)
    #最後の月の返済額を整数に直す
    c = int(c)
    #最後の月の返済額と返済総額を出力
    print(c1.month + 1,'月: 返済額',str(c),'円これで完済。返済総額：',str(all),'円')
    
[/code]

**試したこと**  
インスタンス変数に更新した値を代入すれば良いと思いtukidukiメソッドの引数をインスタンス変数に変えたり、メソッド内の変数をインスタンス変数に代入して繰り返し処理をしてみたりしたのですが解決せずやり方がわかりません。  
インスタンス変数について調べたのですがwhile文で更新した内容をclassの外で使う方法を見つけることができませんでした。  
while文で更新された値をreturnで返そうとすると繰り返し処理が行われませんでした。  
よろしければご教授お願いします。

**補足情報** （FW/ツールのバージョンなど）  
macOS BigSur バージョン11.2.3  
python 3.9.5  
エディタ VS code 1.58.1


CC BY-SA 4.0
2021-07-16T03:01:17.730
78221
2021-07-16T03:31:04.723
2021-07-16T03:18:03.590
47313
47313
question
python
関数内で更新した変数を関数外で使いたい


自己解決できました！  
見てくださった方すみません！

[code]

    class Calculation():  
        def __init__(self,debt,Repayment_amount,Interest,total,month):
            self.debt = debt
            self.Interest = Interest
            self.Repayment_amount = Repayment_amount
            self.total = total 
            self.month = month
    
        def tukiduki(self,):
            while self.debt > self.Repayment_amount :
                
                self.debt = self.debt * (1 + self.Interest / 12 / 100)
                self.debt -= self.Repayment_amount
                self.total = self.total + self.Repayment_amount
                self.month = self.month + 1
                print(self.month,'月: 返済額',self.Repayment_amount,'円','残り',self.debt)
                
    debt = int(input('あなたの借金を入力してね(円)'))
    Interest = float(input('年利率(%)> '))
    Repayment_amount = int(input('月々の返済額'))
    total = 0
    month = 0
    
    #インスタンス変数を作る
    c1 = Calculation(debt,Repayment_amount,Interest,total,month)
    
    #月々の借金返済を繰り返し処理で行う
    c1.tukiduki()
    
    #最後の月の返済額の計算
    c = c1.debt * (1 + c1.Interest / 12 / 100)
    #返済総額を求める
    all = int(c1.total + c)
    #最後の月の返済額を整数に直す
    c = int(c)
    #最後の月の返済額と返済総額を出力
    print(c1.month + 1,'月: 返済額',str(c),'円これで完済。返済総額：',str(all),'円')
    
    
[/code]


CC BY-SA 4.0
2021-07-16T03:31:04.723
78223
2021-07-16T03:31:04.723
47313
78221
answer