Python 如何使用for循环打印以前的函数执行的操作?

Python 如何使用for循环打印以前的函数执行的操作?,python,for-loop,Python,For Loop,作为一项任务,我正在用python制作一个简单的界面,可以显示一个余额,添加到该余额中,从该余额中取出钱,检查利率,最后检查前面三个操作。这将是选项==5。那么,我应该在def的底部写些什么才能做到这一点呢 usd = 500 def main(): print(""" 1. Balance 2. Add 3. Retrieve 4. Interest 5. Last Changes ""

作为一项任务,我正在用python制作一个简单的界面,可以显示一个余额,添加到该余额中,从该余额中取出钱,检查利率,最后检查前面三个操作。这将是选项==5。那么,我应该在def的底部写些什么才能做到这一点呢

usd = 500

def main():
    print("""
    1. Balance
    2. Add
    3. Retrieve
    4. Interest
    5. Last Changes
    """)

    choice = int(input("Choose: "))

    if choice == 1:
        global usd
        balance()
    elif choice == 2:
        add()
    elif choice == 3:
        retrieve()
    elif choice == 4:
        interest()
    elif choice == 5:
        changes()

def balance():
    global usd
    print("Balance: ", round((usd),2))
    main()

def add():
    global usd
    amount = int(input("How much do you want to add? "))
    usd = amount + usd
    print("New balance = ", round((usd),2))
    main()

def retrieve():
    global usd
    amount = int(input("How much do you want to retrieve: "))
    usd = usd - amount
    print("New balance = ", round((usd),2))  
    main()

def interest():
    global usd
    if usd<=1000000:
        usd = ((usd/100)*101)
        print("New balance: ", round(((usd/100)*101), 2))
    elif usd>=1000000:
        usd = ((usd/100)*102)
        print("New balance: ", round(((usd/100)*102), 2))
    main()

def changes(): 
    
    main()

main()

听起来好像你想记录以前的行动。您可以通过创建一个列表并在每次操作完成时追加一个新条目来完成此操作。然后,“更改”功能可以打印出列表中的最后3项

您可以将该列表设置为全局列表,并以访问
usd
的相同方式访问它

您还可以在main中创建列表,并将其作为参数传递给changes。如果您决定这样做,您可以让每个函数返回它们的日志,以便将其附加到main中的列表中

例如(仅使用add函数)

使用全局变量(这是一种不好的做法,但较短):

或者更典型的方法,使用循环(没有全局变量)

这种方法的一个潜在问题是,您正在无限期地将项目添加到日志列表中,理论上,您的计算机最终可能会耗尽内存。为了补救,只要列表长度大于3,就可以从列表中删除额外的日志

清单的文件:


全局变量通常是不好的做法,因此最好避免将usd作为全局变量,但我将让您决定这一点

欢迎使用堆栈溢出。请阅读如何问好。确保你的问题涵盖以下3个要素:1。问题陈述2。您的代码(应该是3.错误消息(最好是完全回溯,以帮助其他人查看并提供反馈).您的班级是否已经教过您关于类/对象的知识?FWIW如果他们教您使用全局状态做任何事情,他们会教您一些坏习惯,您以后需要花时间来忘记这些坏习惯。:\您介意提供一个例子吗?无法弄清楚如何在每次操作完成时添加新条目,也无法让函数返回其值日志Thanks@eirvav我加了一个例子
Choose: 5
+6105
-500000
+1110000
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()