Нужно руководство по логическому программированию на Python - PullRequest
2 голосов
/ 14 января 2011

Я изо всех сил пытался создать 2 очень маленьких логических приложения на Python. Я очень новичок в программировании и могу определенно использовать некоторые из ваших советов, так как это может быть очень легко для кого-то с опытом.

Первая - это небольшая программа, которая рассчитывает статистические уравнения на основе чисел, введенных в программу, и выводит результаты в небольшую таблицу. Вот PDF с заданием:

http://xboxflashing.com/cw2010.pdf

Мне удалось выполнить все, кроме самой последней части задачи 1 - все работает нормально, за исключением того, что я не уверен, как правильно устанавливать диапазоны. У меня была установка if / elif, добавление к счетчику (чтобы подсчитать, сколько в диапазоне) - затем отображение счетчика под заголовками таблицы, однако отображаемый результат всегда получался неправильно. Следовательно, я предполагаю, что поступаю неправильно, или, возможно, слишком усложняю вещи.

Буду очень признателен за любые советы, как это сделать.

Во-вторых, задача маятника поражает мой разум. У меня очень ограниченный опыт работы с Python, и я не могу понять, как изложить код для того, что спрашивают.

Если бы вы могли наставить меня в том, как все изложить, это было бы поразительно и помогло бы мне. Я не ищу фактических ответов - я сам могу найти синтаксис для них в своих учебниках, мне просто очень нужна помощь, чтобы начать формулировать решение , Любая помощь по второму заданию была бы чрезвычайно полезна для меня.

Спасибо, что уделили время.

Если вам требуется дополнительная информация - пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 14 января 2011

Для первой проблемы, простая реализация без наворотов:

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
1 голос
/ 14 января 2011

Как насчет этого?

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
...