需要Python中的逻辑编程指导

时间:2011-01-14 20:07:10

标签: python statistics logic deviation

我一直在努力用Python创建2个非常小的逻辑应用程序。我对编程非常陌生,绝对可以使用你的一些指导,因为对于有经验的人来说这可能很容易。

第一个是一个小程序,它根据输入程序的数字计算统计方程,并将结果输出到一个小表中。这是任务的PDF:

http://xboxflashing.com/cw2010.pdf

我已经设法完成了除了任务1的最后一部分之外的一切 - 一切正常但除了我不确定如何设置范围。我有一个if / elif设置,添加一个计数(计算范围内有多少) - 然后将计数显示在表格标题下,但显示的结果总是错误地显示出来。因此,我猜我会以错误的方式解决这个问题,或者可能使问题过于复杂。

非常感谢任何关于如何解决这个问题的建议。

其次,钟摆任务令人难以置信。我对Python的经验非常有限,而且我无法理解如何为所要求的内容设置代码。

如果你可以指导我如何设置,那将是惊人的,对我来说是一个巨大的帮助。我不是在寻找实际的答案 - 我可以在教科书中找到它的语法,我真的需要帮助才能开始设置解决方案 。 对任务2的任何帮助对我都是非常有益的。

感谢您的时间。

如果您需要任何进一步的信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

这个怎么样?

n = int(raw_input("How many numbers?"))
nums = []
for i in range(n):
    nums[i] = float(raw_input("Enter %i th numnber >" %i))
s = sum(nums)
s2 = sum(map(lambda x:x*x,nums))
mu = s/n
mu2 = s2/n
sigma = (mu2-mu)**(0.5)
error_in_mean = sigma/(n)**(0.5)

print "x_i\tx_i-mu\t(x_i-mu)/sigma"
for x in nums:
    print "%f\t%f\t%f" %(x,x-mu,(x-mu)/sigma)

absdiff = map(lambda x:abs(x-mu),nums)
n_0 = sum(map(lambda x:(x<=sigma) , absdiff))
n_1 = sum(map(lambda x:(x>sigma)and(x<=2*sigma) , absdiff))
n_2 = sum(map(lambda x:(x>2*sigma)and(x<=3*sigma) , absdiff))
n_3 = sum(map(lambda x:(x>3*sigma) , absdiff))

print "Within 1 sigma: ",n_0
print "Between 1 and 2 sigma: ",n_1
print "Between 2 and 3 sigma: ",n_2
print "Beyond 3 sigma: ",n_3
print "Within 1 sigma: ",n_0

答案 1 :(得分:1)

对于第一个问题,一个没有任何花哨的简单实现:

numbers = []    
n = int(raw_input("Enter the amount of numbers: "))
for i in range(n):
    num = float(raw_input("Enter number %d: " % d))
    numbers.append(num)

# Calculate the statistical values here

within_1_stddev = 0
within_2_stddev = 0
within_3_stddev = 0
outside_3_stddev = 0

for num in numbers:
    if (avg - stddev) <= num < (avg + stddev):
        within_1_stddev += 1
    elif (avg - 2 * stddev) < num <= (avg - stddev) or (avg + stddev) <= num < (avg + 2 * stddev):
        within_2_stddev += 1
    elif (avg - 3 * stddev) < num <= (avg - 2 * stddev) or (avg + 2 * stddev) <= num < (avg + 3 * stddev):
        within_3_stddev += 1
    else:
        outside_3_stddev += 1

# Output here

对于第二个,这并不容易 - 我有点不喜欢自己的pyplotlib,原因很简单,有时它可能非常压倒性。当然它可以做任何事情,但......:)

# Imports here

# Make a small menu here that sets the initial variables, with raw_input and
# a simple if-else structure, I guess?

timesteps = []
omegas = []
thetas = []

# Here goes the code from the PDF, but inside the loop add something like
    timesteps.append(t)
    omegas.append(omega)
    thetas.append(theta)

# Now you have the time, omega and theta in corresponding indexes at the
# timesteps, omegas and thetas variables.

# Do the plot here (consult the tutorial as suggested in the PDF)
# pyplot.show() (if I remember the name correctly) might be quite helpful here