1
我有詞作爲鍵和整數作爲值的字典。它輸出作爲這樣:編寫的標準偏差函數
print (word_ratings_dict)
{'hate': [1, 2, 2, 1, 1, 3, 0, 2, 3, 2, 0, 4, 1, 1], 'joy': [3, 4, 3, 3, 2, 4, 1]}
對於字典中的每個關鍵詞,我需要計算其標準偏差,而無需使用統計模塊。
繼承人是我到目前爲止有:
def menu_validate(prompt, min_val, max_val):
""" produces a prompt, gets input, validates the input and returns a value. """
while True:
try:
menu = int(input(prompt))
if menu >= min_val and menu <= max_val:
return menu
break
elif menu.lower == "quit" or menu.lower == "q":
quit()
print("You must enter a number value from {} to {}.".format(min_val, max_val))
except ValueError:
print("You must enter a number value from {} to {}.".format(min_val, max_val))
def open_file(prompt):
""" opens a file """
while True:
try:
file_name = str(input(prompt))
if ".txt" in file_name:
input_file = open(file_name, 'r')
return input_file
else:
input_file = open(file_name+".txt", 'r')
return input_file
except FileNotFoundError:
print("You must enter a valid file name. Make sure the file you would like to open is in this programs root folder.")
def make_list(file):
lst = []
for line in file:
lst2 = line.split(' ')
del lst2[-1]
lst.append(lst2)
return lst
def rating_list(lst):
'''iterates through a list of lists and appends the first value in each list to a second list'''
rating_list = []
for list in lst:
rating_list.append(list[0])
return rating_list
def word_cnt(lst, word : str):
cnt = 0
for list in lst:
for word in list:
cnt += 1
return cnt
def words_list(file):
lst = []
for word in file:
lst.append(word)
return lst
def word_rating(word, ratings_lst):
'''finds ratings for a word and appends them to a dictionary of words'''
lst = []
for line in ratings_lst:
line = line.split()
if word in line:
rating = line[0]
lst.append(int(rating))
return lst
cnt_list = []
while True:
menu = menu_validate("1. Get sentiment for all words in a file? \nQ. Quit \n", 1, 1)
if menu == True:
ratings_file = open("sample.txt")
ratings_list = make_list(ratings_file)
word_ratings_dict = {}
word_avg_dict = {}
std_dev_dict = {}
word_file = open_file("Enter the name of the file with words to score \n")
word_list = words_list(word_file)
for word in word_list:
#counts the words
cnt = word_cnt(ratings_list, word)
cnt_dict[word] = cnt
word_ratings_dict[word] = word_rating(word, ratings_list)
total_rating = 0
for i in range (0, cnt):
total_rating += word_ratings_dict[word][i]
word_avg_dict[word] = total_rating/cnt
std_dev_dict[word] =
即使你不想'進口statistics',在[模塊代碼(HTTPS ://hg.python.org/cpython/file/3.5/Lib/statistics.py)是開源的。您始終可以閱讀該模塊的功能。無論如何,「統計」有什麼問題? – ChrisP
這是一個任務,教官明確表示我們不能使用統計模塊。 –