Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2016 18:07:15

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Бьюсь челом

Друзья, помогите пожалуйста решить такого рода вопрос.
Код:

def read_data():
	otveti = (".ans", ".tans")
	_line = ""
	dict_with_ans = collections.defaultdict (list)
	dict_with_tans = collections.defaultdict (list)
	fh = open("questions2.txt", encoding = "utf-8")
	for line in fh:
		line = line.strip("\n").strip("")
		if line.endswith(".qs"):
			line = line.rstrip(".qs")
			_line += line + "\n"
		if line.endswith(otveti):
			x = dict_with_tans[_line]
			y = dict_with_ans[_line]
			_line = ""
			if line.endswith(".ans"):
				line = line.rstrip(".ans")
				y.append(line)
			elif line.endswith(".tans"):
				line = line.rstrip(".tans").lower()
				x.append(line)
				y.append(line)
		else:
			_line += line + "\n"
	return dict_with_ans, dict_with_tans

Пример строк в файле:
Возвращает копию строки s, в которой все символы приведены.qs
к нижнему регистру
s.lower().tans

Функция распихивает по словарям вопросы и ответы к тесту.
Первая строчка вопроса помечена расширением .qs
правильный ответ помечен .tans
Вопрос: почему строка с расширением .qs попадает в словарь дважды?
Уже не в состоянии думать над этой проблемой. Заранее спасибо за помощь.



lol developer

Офлайн

#2 Апрель 19, 2016 02:02:41

r00tl3ss
Зарегистрирован: 2016-03-31
Сообщения: 25
Репутация: +  5  -
Профиль   Отправить e-mail  

Бьюсь челом

if line.endswith(".qs"): # выполняется, когда строка заканчивается на .qs
    ...
    _line += line + "\n" 
if line.endswith(otveti): # собственно здесь будет false
    ...
else: # и будет выполняться это условие, т.е. уже второй раз.
    _line += line + "\n"

Отредактировано r00tl3ss (Апрель 19, 2016 02:03:59)

Офлайн

#3 Апрель 19, 2016 05:31:52

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Бьюсь челом

Бьюсь челом
сначала неправильно прочитал



Офлайн

#4 Апрель 19, 2016 11:14:46

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Бьюсь челом

r00tl3ss
Спасибо, что открыли глаза.
Действительно, ошибка детского сада.
FishHook
Вы в любом случае не прогадали. Я вчера бился всем, чем только можно.



lol developer

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version