2012-03-19 6 views
1

Я пытаюсь выяснить, что не так с моим кодом. Может ли кто-нибудь это исправить?Начало стандартного отклонения Python

def main(): 
    fname = input("Enter filename:") 
    infile = open(fname, "r") 
    SD() 

def SD(): 
    b= [] 
    a = 5.0 
    r = len(b) 
    for n in range(r-1): 
     b.append((r[n] -a)**2) 
    m = (float(b)/r)**0.5 
    print("The standard deviation is", m) 
main() 
+1

, что заставляет вас думать, что есть проблема? (то, что вы получаете, и чего вы ожидаете получить?) – mfrankli

+1

Я получил это сообщение об ошибке: Traceback (последний последний звонок): Файл «C: \ Python32 \ new.py», строка 14, в main() Файл «C: \ Python32 \ new.py», строка 4, в основном SD() Файл «C: \ Python32 \ new.py», строка 12, в SD m = (float (b)/**) 0.5 Аргумент типаError: float() должен быть строкой или числом – LorrJ

+1

@LorraineJane: 'b' - это список, не содержащий числа, разделяемого r, во-вторых, len (b) будет' 0 'как' b = [] ', проверьте, действительно ли это то, что вы намереваетесь сделать. – avasal

ответ

5

У вас есть несколько ошибок:

def SD(): 

    # b is empty 
    b= [] 
    a = 5.0 

    #this will always be 0 
    r = len(b) 

    # range(r-1) == [] because it is range(-1) 
    # whole loop is skipped 
    for n in range(r-1): 
     b.append((r[n] -a)**2) 

    # float(b) should throw an error, maybe sum(b) ? 
    m = (float(b)/r)**0.5 
    print("The standard deviation is", m) 
main() 

b является списком; вы не можете перечислить список в поплавок.

Возможно, вы хотите передать массив SD()? Вы должны read() содержимое файлов, а затем, возможно, split(), что в массив и передать его в SD() в качестве аргумента

+0

Спасибо, мой код сейчас работает – LorrJ

1

Для образца (где вы будете называть int() на них.):

def SD(numList): 
    cntN=len(numList) 
    sumN=0 
    for i in numList: 
     sumN+=i 
    avgVal=float(sumN)/float(cntN) 
    sumVar=0.0 
    for i in range(cntN): 
     sumVar+=float((numList[i]-avgVal)**2) 
    return ((float(sumVar)/float((cntN-1)))**0.5) 
Смежные вопросы