首页 > 解决方案 > 我怎样才能让我的代码重复一个动作?我使用了“for i in range(x):”,但它似乎不起作用

问题描述

import random
import statistics
import math

numbers = [508, 507, 600, 600, 610, 610, 590, 601, 600, 600, 600, 610, 610, 610, 600, 600, 600, 620, 620, 620, 610, 620,
           620, 620, 620, 620, 630, 610, 630, 630, 620, 630, 630, 620, 600, 610, 620, 620, 600, 590, 600, 600, 630, 580,
           580, 570, 580, 590, 560, 580, 580, 570, 580, 580, 580, 580, 580, 570, 580, 580, 560, 570, 560, 580, 570, 580,
           560, 580, 540, 560, 550, 550, 580, 550, 550, 550, 560, 540, 570, 580, 580, 570, 570, 560, 550, 570, 540, 550,
           560]
numbers2 = [5.08, 5.07, 6, 6, 6.1, 6.1, 5.9, 6.01, 6, 6, 6, 6.1, 6.1, 6.1, 6, 6, 6, 6.2, 6.2, 6.2, 6.1, 6.2, 6.2, 6.2,
            6.2, 6.2, 6.3, 6.1, 6.3, 6.3, 6.2, 6.3, 6.3, 6.2, 6, 6.1, 6.2, 6.2, 6, 5.9, 6, 6, 6.3, 5.8, 5.8, 5.7, 5.8,
            5.9, 5.6, 5.8, 5.8, 5.7, 5.8, 5.8, 5.8, 5.8, 5.8, 5.7, 5.8, 5.8, 5.6, 5.7, 5.6, 5.8, 5.7, 5.8, 5.6, 5.8,
            5.4, 5.6, 5.5, 5.5, 5.8, 5.5, 5.5, 5.5, 5.6, 5.4, 5.7, 5.8, 5.8, 5.7, 5.7, 5.6, 5.5, 5.7, 5.4, 5.5, 5.6]
for i in range(100):
    mu = statistics.mean(numbers2)
    c = 0
    sd = []
    for i in range(len(numbers2)):
        b = (numbers2[c] - mu) ** 2
        sd.append(b)
        c += 1
    s2 = sum(sd)
    s = math.sqrt(s2)

    sample = []
    for i in range(20):
        sample.append(random.choice(numbers))
    mus = sum(sample)
    mus = mus / 100
    mus = mus / 20

    t = (mus - mu) / (s / math.sqrt(len(numbers)))
    tvalues = []
    tvalues.append(t)

print(tvalues)
meantv = sum(tvalues) / len(tvalues)
print(meantv)

我错过了什么?我使用的第一个for i in range(100):似乎没有重复代码......我错过了一个缺失的缩进,还是我不能一次重复这么多东西?(或者我是否可能以某种方式错过了指定要重复的内容?)

标签: python

解决方案


尝试移出tvalues = []循环。这样,您每次运行循环时都将该变量设置为一个空列表。


推荐阅读