为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 for 循环打印先前函数完成的操作?

如何使用 for 循环打印先前函数完成的操作?

梦里花落0921 2023-08-22 18:03:29
作为一项作业,我正在 python 中制作一个简单的界面,它可以显示余额、添加该余额、从该余额中取出资金、检查利率,最后检查之前完成的三个操作。这将是 choice == 5。那么我应该在底部 def 中写什么才能做到这一点呢?usd = 500def 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()所需的输出看起来有点像这样;Choose: 5+6105-500000+1110000
查看完整描述

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 设为全局变量,但我将其留给您


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信