2016-11-13 88 views
-2

我收到一個錯誤消息,表中沒有'person'。標準偏差代碼錯誤

爲什麼我會得到這個?

我想計算年齡的標準偏差。

from time import time 
from math import * 
import sqlite3 
hmwk=sqlite3.connect('AGES.sqlite3') 

def main(): 
    start=time() 
    numbers=hmwk.execute("SELECT age from person") 
    numbers = [] 
#creates list of numbers from ages 
    for row in numbers: 
     numbers.append(int(row)) 
    average = float(sum(numbers))/len(numbers) 
#subtracts average x from x or opposite and square, depending on n  
    for n in range(len(numbers) - 1): 
     if numbers[n] > average: 
      numbers.append((numbers[n] - average)**2) 
     if numbers[n] < average: 
      numbers.append((average - numbers[n])**2) 
#takes sqrt of the sum of all these numbers and divides by n-1 
    Stdv = math.sqrt(sum(numbers))/(len(numbers)-1)) 
    end=time() 
    print(Stdv) 
    print("This took",end-start, "time to complete") 

main() 
+3

我們沒有你的數據庫。所以我們無法驗證你在說什麼。 –

+0

爲什麼您認爲該表實際上存在於您打開的數據庫文件中,當證據顯示其他情況時? –

+0

我第一次嘗試調試它將檢查您是否打開正確的數據庫。但是我們沒有你的數據庫,所以我們不能檢查它的錯誤。 –

回答

0

使用sqlite3的命令行程序的.tables命令來檢查文件是否AGES.sqlite3確實包含一個表「人」。

根據您的表格佈局,sqlite3的會話應該與此類似:

[email protected]:~/projects/sqlite3$ sqlite3 AGES.sqlite3 
SQLite version 3.8.7.1 2014-10-29 13:59:56 
Enter ".help" for usage hints. 
sqlite> .tables 
person 
sqlite> .schema person 
CREATE TABLE person (name string, age int); 
sqlite>