import sys from PyQt4 import QtCore, QtGui from random import randint def Gen_from_dic (way): # Загрузка словарей dic_file = open (way, 'rt') # Считываем полученный словарь и закрываем dic_txt = dic_file .read() dic_file .close() # Определяем количество строк в словаре dic_line = len (dic_txt .splitlines()) # Генерируем случайные ключи str_rand = randint (2, dic_line) # Выделяем строку по ключу из файла str_txt = open (way, 'rt') .readlines() [str_rand] .decode ('utf-8') # Разделение на список spis = str_txt .split(';') # Вывод результата return spis def main(): # Определение пути словарей features_way = 'F:/src/generator/dic/features.txt' characters_way = 'F:/src/generator/dic/characters.txt' actions_way = 'F:/src/generator/dic/actions.txt' # Генерация списков features_spis_1 = Gen_from_dic (features_way) features_spis_2 = Gen_from_dic (features_way) characters_spis_1 = Gen_from_dic (characters_way) characters_spis_2 = Gen_from_dic (characters_way) actions_spis = Gen_from_dic (actions_way) # Проверка рода и присвоение слов if characters_spis_1[3] == u'он': while features_spis_1[3] <> u'он': features_spis_1 = Gen_from_dic (features_way) characters_word_1 = characters_spis_1[1] features_word_1 = features_spis_1[1] elif characters_spis_1[3] == u'она': while features_spis_1[3] <> u'она': features_spis_1 = Gen_from_dic (features_way) characters_word_1 = characters_spis_1[1] features_word_1 = features_spis_1[1] if characters_spis_2[3] == u'он': while features_spis_2[3] <> u'он': features_spis_2 = Gen_from_dic (features_way) characters_word_2 = characters_spis_2[1] features_word_2 = features_spis_2[1] elif characters_spis_2[3] == u'она': while features_spis_2[3] <> u'она': features_spis_2 = Gen_from_dic (features_way) characters_word_2 = characters_spis_2[1] features_word_2 = features_spis_2[1] actions_word = actions_spis[1] print features_word_1 + ' ' + characters_word_1 + ' ' + actions_word + features_word_2 + ' ' + characters_word_2 return 0 if __name__ == '__main__': main()
1. Это периодическая ошибка функции randint(). Как я понял из описания ошибки, задается неверный диапазон возможных значений, но в коде вроде однозначно определяется диапазон. Замечу сразу, что длинна словарей - более 5 строк. то есть диапазон (2, 1) задан быть не может (со второй строки, так как первая несет информационный характер). описание ошибки:
Message File Name Line Position
Traceback
<module> F:\src\generator\main_new.py 85
main F:\src\generator\main_new.py 53
Gen_from_dic F:\src\generator\main_new.py 33
IndexError: list index out of range
Message File Name Line Position
Traceback
<module> F:\src\generator\main_new.py 94
main F:\src\generator\main_new.py 80
UnboundLocalError: local variable 'features_word_1' referenced before assignment