Решение на Тесте карти от Михаил Станин

Обратно към всички решения

Към профила на Михаил Станин

Резултати

  • 0 точки от тестове
  • 0 бонус точки
  • 0 точки общо
  • 0 успешни тест(а)
  • 0 неуспешни тест(а)

Код

class Rank:
def __init__(self, symbol):
self.symbol = symbol
def __str__(self):
return str(self.symbol)
rank_pairs = {'King': 'K', 'Queen': 'Q', 'Jack': 'J', 'Ten': '10', 'Nine': '9',
'Eight': '8', 'Seven': '7', 'Six': '6', 'Five': '5',
'Four' : '4', 'Three' : '3', 'Two': '2', 'Ace': 'A'}
RANKS = {}
def ranks_fact(name, val):
def __init__(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
Rank.__init__(self, val)
RANKS.update({name:type(name, (Rank,),{"__init__":__init__})})
return RANKS
for rank, val in rank_pairs.items():
ranks_fact(rank, val)
class Suit:
def __init__(self, color):
self.color = color

Лог от изпълнението

File "lib/language/python/runner.py", line 99, in main
    test = imp.load_source('test', test_module)
  File "/opt/python3.3/lib/python3.3/imp.py", line 109, in load_source
    return _LoadSourceCompatibility(name, pathname, file).load_module(name)
  File "<frozen importlib._bootstrap>", line 586, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1023, in load_module
  File "<frozen importlib._bootstrap>", line 1004, in load_module
  File "<frozen importlib._bootstrap>", line 562, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 869, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "/tmp/d20140407-19315-1pd80ez/test.py", line 41, in <module>
    solution.Card.__hash__ = lambda self: 1

История (5 версии и 3 коментара)

Михаил обнови решението на 25.03.2014 16:59 (преди над 10 години)

+class Rank:
+ def __init__(self, symbol):
+ self.symbol = symbol
+ def __str__(self):
+ return self.symbol
+
+
+ranks_dict = {'King': 'K', 'Queen': 'Q', 'Jack': 'J', 'Ten': '10', 'Nine': '9',
+ 'Eight': '8', 'Seven': '7', 'Six': '6', 'Five': '5',
+ 'Four' : '4', 'Tree' : '3', 'Two': '2', 'Ace': 'A'}
+RANKS = ({key: type(key, (Rank,), {'symbol':value})
+ for key in ranks_dict.keys() for value in ranks_dict.values()})
+
+
+class Suit:
+
+ def __init__(self, color):
+ self.color = color

Благодаря ти за отговора. Това с имената мислех да го оправя по-късно, но в момента ме вълнува как да подам symbol на конструктора на Rank. Знам, че може да се добавят и функции към речника на класа дефиниран от type, но не съм сигурен как точно става...

Пробвах подобни неща:

type(key, (Rank,), {'symbol':value', 'init':Rank(value)})

или

type(key, (Rank,), {'symbol':value, 'init':rank_init}) , където : def rank_init(self, symbol): self.symbol = symbol super(Rank, self).init()

.... Забих на това и нататък не ми остана време да гледам за сега... Надявам се да напредна до утре преди края на срока...

П.П. има __ пред и след init

  • не е нужно да подаваш symbol на __init__ можеш да го направиш атрибут на съответните класове
  • Домашното може да се направи без type, ако не си наясно какво правиш препоръчвам да използваш неща, за които сме говорили на лекции.

Михаил обнови решението на 26.03.2014 16:48 (преди над 10 години)

class Rank:
def __init__(self, symbol):
self.symbol = symbol
def __str__(self):
- return self.symbol
-
-
-ranks_dict = {'King': 'K', 'Queen': 'Q', 'Jack': 'J', 'Ten': '10', 'Nine': '9',
+ return str(self.symbol)
+
+rank_pairs = {'King': 'K', 'Queen': 'Q', 'Jack': 'J', 'Ten': '10', 'Nine': '9',
'Eight': '8', 'Seven': '7', 'Six': '6', 'Five': '5',
- 'Four' : '4', 'Tree' : '3', 'Two': '2', 'Ace': 'A'}
-RANKS = ({key: type(key, (Rank,), {'symbol':value})
- for key in ranks_dict.keys() for value in ranks_dict.values()})
+ 'Four' : '4', 'Three' : '3', 'Two': '2', 'Ace': 'A'}
+RANKS = {}
+def ranks_fact(name, argnames="", Rank=Rank):
+ def __init__(self, **kwargs):
+ for key, value in kwargs.items():
+ print(key, value)
+ setattr(self,key,value)
+ Rank.__init__(self,name)
+ RANKS.update({name:type(name, (Rank,),{"__init__":__init__})})
+ return RANKS
+for rank in rank_pairs.keys():
+ ranks_fact(rank)
class Suit:
def __init__(self, color):
self.color = color

Михаил обнови решението на 26.03.2014 16:51 (преди над 10 години)

class Rank:
def __init__(self, symbol):
self.symbol = symbol
def __str__(self):
return str(self.symbol)
rank_pairs = {'King': 'K', 'Queen': 'Q', 'Jack': 'J', 'Ten': '10', 'Nine': '9',
'Eight': '8', 'Seven': '7', 'Six': '6', 'Five': '5',
'Four' : '4', 'Three' : '3', 'Two': '2', 'Ace': 'A'}
RANKS = {}
def ranks_fact(name, argnames="", Rank=Rank):
def __init__(self, **kwargs):
for key, value in kwargs.items():
- print(key, value)
setattr(self,key,value)
Rank.__init__(self,name)
RANKS.update({name:type(name, (Rank,),{"__init__":__init__})})
return RANKS
for rank in rank_pairs.keys():
ranks_fact(rank)
class Suit:
def __init__(self, color):
self.color = color

Михаил обнови решението на 26.03.2014 16:52 (преди над 10 години)

class Rank:
def __init__(self, symbol):
self.symbol = symbol
def __str__(self):
return str(self.symbol)
rank_pairs = {'King': 'K', 'Queen': 'Q', 'Jack': 'J', 'Ten': '10', 'Nine': '9',
'Eight': '8', 'Seven': '7', 'Six': '6', 'Five': '5',
'Four' : '4', 'Three' : '3', 'Two': '2', 'Ace': 'A'}
RANKS = {}
-def ranks_fact(name, argnames="", Rank=Rank):
+def ranks_fact(name):
def __init__(self, **kwargs):
for key, value in kwargs.items():
setattr(self,key,value)
Rank.__init__(self,name)
RANKS.update({name:type(name, (Rank,),{"__init__":__init__})})
return RANKS
for rank in rank_pairs.keys():
ranks_fact(rank)
class Suit:
def __init__(self, color):
self.color = color

Михаил обнови решението на 26.03.2014 16:56 (преди над 10 години)

class Rank:
def __init__(self, symbol):
self.symbol = symbol
def __str__(self):
return str(self.symbol)
rank_pairs = {'King': 'K', 'Queen': 'Q', 'Jack': 'J', 'Ten': '10', 'Nine': '9',
'Eight': '8', 'Seven': '7', 'Six': '6', 'Five': '5',
'Four' : '4', 'Three' : '3', 'Two': '2', 'Ace': 'A'}
RANKS = {}
-def ranks_fact(name):
+def ranks_fact(name, val):
def __init__(self, **kwargs):
for key, value in kwargs.items():
- setattr(self,key,value)
- Rank.__init__(self,name)
+ setattr(self, key, value)
+ Rank.__init__(self, val)
RANKS.update({name:type(name, (Rank,),{"__init__":__init__})})
return RANKS
-for rank in rank_pairs.keys():
- ranks_fact(rank)
+for rank, val in rank_pairs.items():
+ ranks_fact(rank, val)
class Suit:
def __init__(self, color):
self.color = color