1 回答

TA貢獻1804條經驗 獲得超7個贊
聽起來您想保留之前操作的日志。您可以通過創建一個列表并在每次完成操作時附加一個新條目來實現此目的。然后您的更改函數可以打印出列表中的最后 3 項。
您可以將該列表設置為全局并以與訪問相同的方式訪問它usd。
您還可以在 main 中創建列表并將其作為參數傳遞給更改。如果您決定這樣做,您可以讓每個函數返回其日志,以便您可以將其附加到 main 中的列表中。
例如(僅使用add函數說明)
使用全局變量(這是不好的做法,但更短):
usd = 500
log = []
def add():
? ? global usd
? ? amount = int(input("How much do you want to add? "))
? ? usd = amount + usd
? ? print("New balance = ", round((usd),2))
? ? log.append(f"+{amount}")? ? # add change to log
? ? main()
def changes():?
? ? # print last 3 items in log
? ? for change in log[-3:]:
? ? ? ? print(change)
? ? main()
或者更典型的方式,使用循環(沒有全局變量)
usd = 500
def main():
? ? log = []
? ? choice = 0
? ? while choice != 6:
? ? ? ? print("""
? ? ? ? 1. Balance
? ? ? ? 2. Add
? ? ? ? 3. Retrieve
? ? ? ? 4. Interest
? ? ? ? 5. Last Changes
? ? ? ? 6. Quit
? ? ? ? """)
? ? ? ? choice = int(input("Choose: "))
? ? ? ? if choice == 1:
? ? ? ? ? ? balance()
? ? ? ? elif choice == 2:
? ? ? ? ? ? log.append(add())? ? ? # add change to log
? ? ? ? elif choice == 3:
? ? ? ? ? ? log.append(retrieve()) # add change to log
? ? ? ? elif choice == 4:
? ? ? ? ? ? interest()
? ? ? ?elif choice == 5:
? ? ? ? ? ? changes(log)
def add():
? ? global usd
? ? amount = int(input("How much do you want to add? "))
? ? usd = amount + usd
? ? print("New balance = ", round((usd),2))
? ? return f"+{amount}"
def changes(log):?
? ? # print last 3 items in log
? ? for change in log[-3:]:
? ? ? ? print(change)
main()
這種方法的一個潛在問題是,因為您無限期地將項目添加到日志列表中,理論上您最終可能會耗盡計算機上的內存。為了解決這個問題,只要列表的長度大于 3,您就可以從列表中刪除多余的日志。
一般來說,全局變量是不好的做法,因此最好避免將 usd 設為全局變量,但我將其留給您
添加回答
舉報