2013-12-14 4 views
0

пытался решить это за последние несколько часов, и я не могу найти решение! По существу, мы должны написать программу, которая открывает файл, берет из него цифры и вычисляет вышеупомянутые вещи (среднее, минимальное, максимальное, стандартное деривация). Ниже то, что я в настоящее время:Напишите программу, которая вычисляет средний, средний, максимальный и стандартный вывод.

def get_numbers(): 

# Open a file for reading. 
infile = open('inNumbers.txt', 'r') 

# Read the numbers from the file. 
line = infile.readline() 
while line != '': 
    print(line) 
    line = infile.readline() 
infile.close() 


def mean(nums): 
    sum = 0.0 
    for num in nums: 
     sum = sum + num 
    return sum/len(nums) 


def stdDev(nums, xbar): 
    sumDevSq = 0.0 
    for num in nums: 
     dev = xbar - num 
     sumDevSq = sumDevSq + dev * dev 
    return sqrt(sumDevSq/(len(nums)-1)) 


def min(): 
    showFile = open("inNumbers.txt", 'r') 
    lowest = None 
    for line in showFile: 
     tokens = line.split(',') 
     value = min(tokens[:2]) 
     if lowest == None: 
      lowest = value 
     if value < lowest: 
       lowest = value 


def main(): 
    print("This program computes mean, maximum, minimum and standard deviation.") 

    data = get_numbers() 
    xbar = mean(data) 
    std = stdDev(data, xbar) 

    print("\nThe mean is", xbar) 
    print("The standard deviation is", std) 
    print("The minimum is", value) 

основной()

+1

И в чем проблема? Вы не понимаете, что означают эти математические слова, вы не понимаете питона, вы не понимаете программирования ... что? –

+1

На самом деле вы не читаете никаких чисел: вы передаете дескриптор файла, а не фактические числа. Кроме того, ваша средняя функция неправильно отступом (цикл не будет выполняться). –

+0

Я бы сказал, что проблема в том, что я понятия не имею, правильно ли я это делаю, или нет. Поэтому в основном я бы сказал, что я недостаточно понимаю python, чтобы знать, как сделать мою программу работоспособной, потому что она возникает с ошибками, когда я пытаюсь запустить ее. – user3102945

ответ

1

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

Тем не менее, здесь идет код (хотя я не уверен в формуле для станд-разработчика):

#open file 
with open('inNumbers.txt', 'r') as f: 
    #read lines, strip trailing newlines, and convert to float if not empty 
    numbers = [float(x) for x in (x.strip() for x in f) if x] 

avg = sum(numbers)/len(numbers) 
sdv = (sum((n - avg) ** 2 for n in numbers)/len(numbers)) ** .5 
print('The arithmetic mean is {}'.format(avg)) 
print('The standard deviation is {}'.format(sdv)) 
print('The minimum is {}.'.format(min(numbers))) 

Может быть, вы можете взять что-то полезное из него.

+0

Интересно, я не понимал, что это было/может быть так просто. Спасибо, что помогли, я определенно получил что-то от этого! – user3102945

0

Очень важно знать, как выглядит файл, содержащий числа. Но из вашего примера кода я предполагаю, что на каждой строке есть один поплавок. Было бы проще, если бы вы уже установили numpy. По-моему, это по умолчанию на Mac. So шаг за шагом:

import numpy 

#define a function that will just open your file containing numbers and get 
#all data into a list of floats 
def getNumbers(file): 
    numbers = [] 
    with open(file, 'r') as numbers_file: 
    for line in numbers_file.readlines(): 
     numbers.append(float(line.strip('\n').strip())) 
    return numbers 


#get data from 'numbers.txt' into a list named 'num_list' 
num_list = getNumbers('numbers.txt') 

#print what you need 
print 'Maximum is %g' %max(num_list) 
print 'Minimum is %g' %min(num_list) 
print 'Average is %g' %numpy.mean(num_list) 
print 'Standard deviation is %g' %numpy.std(num_list) 

#if you do not have numpy 
my_avg = sum(num_list)/len(num_list) 
print 'Average is %g' %my_avg 
#you need to do some reading for the std-dev formula :) 
Смежные вопросы