Уведомления

Группа в Telegram: @pythonsu

#1 Май 29, 2012 13:45:18

mozart034
Зарегистрирован: 2012-05-29
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите исправить ошибку

Выбрав произвольные отношения A, B доказать истинность следующего свойства симметризации и композиции отношения (A ^ B)-1=A-1 ^ B-1;

Имеется вот такой код:


import sys
#Удаляем из введенных данных повторяющиеся элементы
def listToSet(rel):
	result = list()
	for el in rel:
		if el not in result:
			result.append(el)
	return result
#Обращение (меняем элементы пар местами)	
def Invers(rel):
	result = rel
	for i in range(len(result)):
		result[i][0], result[i][1] = result[i][1], result[i][0]
	return listToSet(result)
#Элементы из первого множества, которые входят и во второе
def And(f,s):
	result = list()
	for el in f:
		if el in s:
			result.append(el)
	return result
#Главный код программы	
while True:
	print('Формат отношений: [[1,2],[3,4], ...,[x(n-1),x(n)]]')
	print('A:')
	exec("A = listToSet("+input("\t")+")")
	print('B:')
	exec("B = listToSet("+input("\t")+")")
	print('A^(-1) & B^(-1)')
	print('\t'+str(And(Invers(A),Invers(B))))
	print('(A & B)^(-1)')
	print('\t'+str(And(A,B)))

И вот такая ошибка:
Traceback (most recent call last):
File “lr2.py”, line 26, in <module>
exec(“A = listToSet(”+input(“\t”)+“)”)
TypeError: cannot concatenate ‘str’ and ‘list’ objects


Отредактировано mozart034 (Май 29, 2012 13:45:56)

Офлайн

#2 Май 29, 2012 14:38:10

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Помогите исправить ошибку

a = set(map(lambda s: tuple(s.split()), raw_input('A: ').split(', ')))
b = set(map(lambda s: tuple(s.split()), raw_input('B: ').split(', ')))
 
intersection = lambda a, b: a.intersection(b)
inversion = lambda rel: { pair[::-1] for pair in rel }
 
print intersection(inversion(a), inversion(b))
print inversion(intersection(a, b))

[15:35] home:~/dev python help.py
A: 1 3, 2 4
B: 1 3, 2 4
set([('3', '1'), ('4', '2')])
set([('3', '1'), ('4', '2')])

Не знаю, это ли вы хотели, потому что
(A ^ B)-1 = A-1 ^ B-1
это не:
And(A,B) = And(Invers(A),Invers(B))
но смысл, думаю, понятен.



Отредактировано fata1ex (Май 29, 2012 15:27:33)

Офлайн

#3 Май 29, 2012 14:40:01

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

Помогите исправить ошибку

>>> type(input("\t"))
        [1,2,3,4]
<type 'list'>
>>> 
Попробуй так
str(input(“\t”))



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version