Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何重复这些步骤_Python_Loops - Fatal编程技术网

Python 如何重复这些步骤

Python 如何重复这些步骤,python,loops,Python,Loops,在我的程序中,我总共有3个步骤 找出平均数 使用平均值拆分给定列表 如果阈值>ε,则更新平均值并使用更新的平均值再次重复步骤2,否则完成 无论如何,我已经完成了以上两个步骤。第三步我只完成了一半,在如何重复第二步直到阈值小于ε的过程中苦苦挣扎 我的代码如下: 将numpy导入为np 存储列表=[1,2,3,1,2,3,1] #第一步 平均值=np.平均值(存储列表) 打印(“平均值:+str(平均值)) #步骤2 small_list=[如果我指的是_值,则i代表i店内_列表] 打印(小列表)

在我的程序中,我总共有3个步骤

  • 找出平均数
  • 使用平均值拆分给定列表
  • 如果阈值>ε,则更新平均值并使用更新的平均值再次重复步骤2,否则完成
  • 无论如何,我已经完成了以上两个步骤。第三步我只完成了一半,在如何重复第二步直到阈值小于ε的过程中苦苦挣扎

    我的代码如下:

    将numpy导入为np
    存储列表=[1,2,3,1,2,3,1]
    #第一步
    平均值=np.平均值(存储列表)
    打印(“平均值:+str(平均值))
    #步骤2
    small_list=[如果我指的是_值,则i代表i店内_列表]
    打印(小列表)
    打印(大列表)
    toe_1=np.平均值(小列表)
    toe_2=np.平均值(大列表)
    打印(“脚趾值1:+str(脚趾1))
    打印(“束角值2:+str(束角2))
    toe_sum=np.sum([toe_1,toe_2])
    前束角=np.除(前束角和,2)
    打印(“鞋头:+str(鞋头))
    #步骤3
    新阈值=np减去(平均值、鞋头)
    打印(新的\u阈值)
    εu值=0.1
    如果新阈值>ε值:
    平均值=鞋头
    打印(“新平均值:+str(平均值))
    
    我以上的输出是:

    Mean Value : 1.8571428571428572
    [1, 1, 1]
    [2, 3, 2, 3]
    toe value 1 : 1.0
    toe value 2 : 2.5
    toe cap : 1.75
    new threshold : 0.1071428571428572
    new mean : 1.75
    

    在这种情况下,考虑到新的平均值,我必须再次重复步骤2。我是Python新手。

    Python中有两种类型的循环<代码>用于循环和
    while
    循环。您可以通过执行递归来实现“循环”,递归只是在同一个函数中调用一个函数,具有正确的exit语句,如下所示:

    def打印10次(num,count=0):
    如果计数小于10:
    打印(个)
    计数+=1
    打印10次(数量,计数)
    打印10次(5)#将打印“5”10次
    
    尽管在python中有更简单的循环方法。当您知道需要预先执行多少个循环时,最容易执行的循环是
    for
    循环。上面的示例可以这样执行:

    def打印10次(num):
    对于范围(10)内的i:
    打印(个)
    打印10次(5)#将打印“5”10次
    
    您可以执行的另一个循环是
    while
    循环。要使用它,你必须在它的开头有一个正确的退出声明。如果要使用while循环执行上述示例,则必须如下所示:

    def打印10次(num):
    i=0
    当我<10时:
    打印(个)
    打印10次(5)#将打印“5”10次
    
    要使代码正常工作,您需要为每个要使用的循环都有一个exit语句。例如,您可能希望这3个步骤运行2次。您可以这样做:

    将numpy导入为np
    存储列表=[1,2,3,1,2,3,1]
    对于范围(2)中的i:
    #第一步
    平均值=np.平均值(存储列表)
    打印(“平均值:+str(平均值))
    #步骤2
    small_list=[如果我指的是_值,则i代表i店内_列表]
    打印(小列表)
    打印(大列表)
    toe_1=np.平均值(小列表)
    toe_2=np.平均值(大列表)
    打印(“脚趾值1:+str(脚趾1))
    打印(“束角值2:+str(束角2))
    toe_sum=np.sum([toe_1,toe_2])
    前束角=np.除(前束角和,2)
    打印(“鞋头:+str(鞋头))
    #步骤3
    新阈值=np减去(平均值、鞋头)
    打印(新的\u阈值)
    εu值=0.1
    如果新阈值>ε值:
    平均值=鞋头
    打印(“新平均值:+str(平均值))
    
    但这将输出相同的东西2次

    无论如何,我已经完成了以上两个步骤。第三步我只完成了一半,在如何重复第二步直到阈值小于ε的过程中苦苦挣扎

    您可以通过一个简单的while循环来实现这一点:

    将numpy导入为np
    存储列表=[1,2,3,1,2,3,1]
    #第一步
    平均值=np.平均值(存储列表)
    打印(“平均值:+str(平均值))
    #步骤2
    鞋头=3
    e=np.exp(1)
    当鞋头>e时:
    small_list=[如果我指的是_值,则i代表i店内_列表]
    打印(小列表)
    打印(大列表)
    toe_1=np.平均值(小列表)
    toe_2=np.平均值(大列表)
    打印(“脚趾值1:+str(脚趾1))
    打印(“束角值2:+str(束角2))
    toe_sum=np.sum([toe_1,toe_2])
    前束角=np.除(前束角和,2)
    打印(“鞋头:+str(鞋头))
    #步骤3
    新阈值=np减去(平均值、鞋头)
    打印(新的\u阈值)
    εu值=0.1
    如果新阈值>ε值:
    平均值=鞋头
    打印(“新平均值:+str(平均值))
    
    toe_cap
    小于
    e
    (欧拉数)时,此循环将结束。我为
    toe\u cap
    分配了一个大于
    e
    的值,以便循环至少运行1次

    这没有问题,因为
    toe_cap
    值不用于任何计算,仅在循环结束时重新分配。这里的目的是用来有一个正确的退出声明


    如果
    toe\u cap
    值有可能永远不会低于
    e
    ,那么您必须添加一个不同的退出语句,这可能要根据您认为足够的循环数而定。

    我无法numpy,但我可以想象,您所需要的只是一个递归运行程序函数,我不想破坏代码的结构,因此我没有尝试优化代码。您可以尝试以下代码,我尝试过,它可以工作:

    import numpy as np
    
    
    def step2(store_list, mean_value):
        small_list = [i for i in store_list if i <= mean_value]
        big_list = [i for i in store_list if i > mean_value]
        toe_1 = np.mean(small_list)
        toe_2 = np.mean(big_list)
        toe_sum = np.sum([toe_1, toe_2])
        toe_cap = np.divide(toe_sum, 2)
        return small_list, big_list, toe_1, toe_2, toe_cap
    
    
    def step3(mean_value, toe_cap):
        new_threshold = np.subtract(mean_value, toe_cap)
        print(new_threshold)
        epsilon_value = 0.1
        if new_threshold > epsilon_value:
            return True, toe_cap
        else:
            return False, mean_value
    
    
    def my_run(store_list, mean_value):
        small_list, big_list, toe_1, toe_2, toe_cap = step2(store_list, mean_value)
        print(small_list)
        print(big_list)
        print("toe value 1 : " + str(toe_1))
        print("toe value 2 : " + str(toe_2))
        print("toe cap : " + str(toe_cap))
        condition, mean_value = step3(mean_value, toe_cap)
        if condition:
            print("new mean : " + str(mean_value))
            my_run(store_list, mean_value)
    
    
    def main():
        store_list = [1, 2, 3, 1, 2, 3, 1]
        mean_value = np.mean(store_list)
        print("Mean Value : " + str(mean_value))
        my_run(store_list, mean_value)
    
    
    if __name__ == '__main__':
        main()
    
    
    将numpy导入为np
    def步骤2(存储列表,平均值):
    small_list=[如果我指的是_值,则i代表i店内_列表]
    toe_1=np.平均值(小列表)
    toe_2=np.平均值(大列表)
    toe_sum=np.sum([toe_1,toe_2])
    前束角=np.除(前束角和,2)
    返回小列表、大列表、鞋头1、鞋头2、鞋头帽
    def步骤3(平均值、鞋头):
    新阈值=np减去(平均值、鞋头)
    打印(新的\u阈值)
    εu值=0.1
    如果新阈值>ε值:
    返回真值,鞋头
    其他:
    返回False,平均值
    定义我的运行时间(存储列表,平均值):
    小列表、大列表、脚趾1、脚趾2、脚趾帽=步骤2(存储列表,平均值