计算买卖股票的最佳时机的Python程序

计算买卖股票的最佳时机的Python程序

我们将在以下教程中创建一个Python程序来估计买卖股票的最佳时机。

那么,让我们开始吧。

理解Python项目

假设我们有一个数组 X ,其中 X[i] 表示第 n 天提供的股票的价格。我们需要计算最大利润。我们最多可以进行一次交易。(交易被认为是买入和卖出股票)。然而,我们必须记住,我们一次只能进行一次交易。因此,在购买新股之前,我们必须卖掉股票。

让我们考虑一个数组 X = [7, 1, 5, 3, 6, 4] ;那么输出将是 5 。正如我们所看到的,如果我们在第 2 天(索引 1 )购买,那么它将以 1 作为购买价格。然后,如果我们在第 5 天出售,我们将获得利润 6-1=5

让我们使用以下步骤解决这个问题

步骤1: 创建与数组 X 大小相同的两个数组 LminRmax ,并将它们填充为0

步骤2: Lmin[0] = A[0]

步骤3: 对于范围在 1 到长度为 X-1 之间的 nLmin[n] = Lmin[n-1]和X[n]的最小值

步骤4: Rmax[i-1] = X[i-1]

步骤5: 对于范围在从长度为 X-1 (包括)到 1 之间的 nRmax[n] = Rmax[n+1]和X[n]的最大值

步骤6: 设置 result = 0

步骤7: 对于范围在 0 到长度为 X-1 之间的 nresult = result和Rmax[n+1] – Lmin[n]的最大值

步骤8: 返回 result

现在,让我们在下面的代码部分中了解这些步骤的实现:

项目代码

现在,让我们考虑以下Python程序,以便计算买卖股票的最佳时间。

文件:stocksProgram.py

# defining a class
class Soln(object):
    # defining the function to calculate the maximum profit
    def max_Profit(self, price):
        """
        :type prices: List[int]
        :rtype: int
        """
        # using the if conditional
        if not price:
            return 0
        # creating two arrays
        Lmin, Rmax = [0 for n in range(len(price))], [0 for n in range(len(price))]
        Lmin[0] = price[0]
        # using the for-loop
        for n in range(1, len(price)):
            Lmin[n] = min(Lmin[n - 1], price[n])
        # printing the Lmin elements
        print(Lmin)
        Rmax[-1] = price[-1]
        # using the for-loop
        for n in range(len(price) - 2, -1, -1):
            Rmax[n] = max(Rmax[n + 1], price[n])
        # printing the Rmax elements
        print(Rmax)
        # assigning initial value of result
        res = 0
        # using the for-loop
        for n in range(len(price) - 1):
            res = max(res, Rmax[n + 1] - Lmin[n])
        return res
# instantiating the class
obj_1 = Soln()
# printing the maximum profit for the provided Array
print(obj_1.max_Profit([7, 2, 5, 8, 6, 3, 1, 4, 5, 4, 7]))

输入:

price = [7, 2, 5, 8, 6, 3, 1, 4, 5, 4, 7]

输出:

[7, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1]
[8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7]
6

解释

在上述代码片段中,我们定义了一个类。然后在类中定义了一个函数 max_profit 用于计算给定数组的最大利润。我们创建了两个数组 LminRmax ,它们的大小与给定数组的大小相同且元素均为 0 。然后将 Lmin 数组的第一个元素的值赋给给定数组的第一个元素。我们使用 for循环 遍历数组的值并将其打印给用户的 Lmin 数组。然后对 Rmax 数组执行类似的操作并将其元素打印给用户。然后将 res 变量的初始值设为0。然后再次使用 for循环 估计最大利润。最后,我们实例化了该类并将给定数组的最大利润打印给用户。在上面的程序中,最大利润是 6

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程