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