Python十赌九输

img


import random, mathdef gamble_once(): return True if random.random() > 0.5 else Falsedef every_day_money(hold_money): if hold_money < 1: return 0 input_money = 1 hold_money = hold_money - input_money while not gamble_once(): input_money = input_money * 2 hold_money = hold_money - input_money if hold_money <= 0: return hold_money hold_money = hold_money + 2 * input_money return hold_moneyif name == 'main': hold_money = 1000 hold_money_list = [] year_number = 10 for day in range(1,math.ceil(365 * year_number)): hold_money = every_day_money(hold_money) hold_money_list.append(hold_money) from matplotlib import pyplot as plt plt.scatter( list(range( len(hold_money_list)) ), hold_money_list, s = 1) plt.title('every day's money during {} year'.format(year_number)) plt.show()
这是已经写出来的代码,不知道怎么重复运行再得出结果

参考GPT和自己的思路:

您好,要重复运行代码以得出结果,您可以将代码放入一个循环结构中,例如使用 for 循环可以重复运行。具体来说,您可以将程序封装成一个函数,然后在一个 for 循环中多次调用该函数,每次传入不同的参数进行计算,最后保存结果或进行统计分析。举个例子,您可以这样修改代码:

import random, math
from matplotlib import pyplot as plt

def gamble_once():
    return True if random.random() > 0.5 else False

def every_day_money(hold_money, year_number):
    if hold_money < 1:
        return 0
    input_money = 1
    hold_money = hold_money - input_money
    hold_money_list = []
    for day in range(1,math.ceil(365 * year_number)):
        input_money = 1
        while not gamble_once():
            input_money = input_money * 2
            hold_money = hold_money - input_money
            if hold_money <= 0:
                hold_money_list.append(hold_money)
                return hold_money
        hold_money = hold_money + 2 * input_money
        hold_money_list.append(hold_money)
    return hold_money_list

if __name__ == '__main__':
    hold_money = 1000
    year_number = 10
    hold_money_list_all = []
    for i in range(10):
        hold_money_list = every_day_money(hold_money, year_number)
        plt.plot(list(range(len(hold_money_list))), hold_money_list)
        hold_money_list_all.append(hold_money_list)
    plt.title("every day's money during {} years".format(year_number))
    plt.xlabel('days')
    plt.ylabel('money')
    plt.show()

    # 计算平均资产值和破产率
    bankrupt_count = 0
    total = 0
    for hold_money_list in hold_money_list_all:
        total += hold_money_list[-1]
        if hold_money_list[-1] <= 0:
            bankrupt_count += 1
    print("平均资产值为:{:.2f}".format(total / len(hold_money_list_all)))
    print("破产率为:{:.2%}".format(bankrupt_count / len(hold_money_list_all)))

在这个修改后的代码中,every_day_money 函数除了接收一个初始资产参数 hold_money,还接收了一个年数参数 year_number,并将每天资产值放入了一个列表 hold_money_list 中。主函数中使用 for 循环调用 every_day_money 函数 10 次,每次传入相同的初始资产值和年数,并将每次计算得到的 hold_money_list 用 plt.plot 画在同一张图中。最后,计算了所有实验的平均资产值和破产率,并打印出来。

想重复运行,用循环呀