Решение на От ливадите до Лас Вегас (и назад) от Валерия Стояновска

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

Към профила на Валерия Стояновска

Резултати

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

Код

import random
suits = ['clubs', 'diamonds', 'hearts', 'spades']
faces = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'A', 'J', 'Q', 'K']
class Card:
def __init__(self, suit, face):
if suit in suits:
self.suit = suit
elif suit == '':
self.suit = None
if face in faces:
self.face = face
elif face == '':
self.face = None
def get_suit(self):
return self.suit
def get_face(self):
return self.face
class Deck:
def __init__(self):
self.cards = []
for card_suit in suits:
for card_face in faces:
card = Card(card_suit, card_face)
self.cards.append(card)
def shuffle(self):
random.shuffle(self.cards)
def cut(self):
if len(self.cards) == 0:
return None
else:
return self.cards.pop(0)
def get_cards(self):
return self.cards
class Player:
def __init__(self):
self.cards = []
def card_count(self):
if len(self.cards) < 5:
return
else:
return len(self.cards)
def draw_cards(self, deck):
self.cards.append(deck.draw_card())
def get_cards(self):
if len(self.cards) == 0:
return "Deck is empty"
else:
return self.cards
class Game:
def __init__(self, number_of_players, dealing_direction, dealing_instructions):
self.number_of_players = number_of_players
self.dealing_direction = dealing_direction
self.dealing_instructions = dealing_instructions
def get_players(self):
if self.number_of_players == 0:
return None
else:
return self.number_of_players
# def prepare_deck(self):
def deal(self, player):
player.cards.append(self.pop(0))
def deal_card(self):
cards_deck = Deck()
self.dealer = []
self.player = []
card = random.choice(cards_deck)
self.dealer.append(card)
cards_deck.remove(card)
card = random.choice(cards_deck)
self.player.append(card)
cards_deck.remove(card)
# def deal(self):
# def get_deck(self):
class Poker:
deck = Deck()
poker = Game(9, 'rtl', (1, 5), deck)

Предполагам, че вече си видяла, но - този ред е причината да не можем въобще да ти импортираме кода, защото не можем да дефинираме класа. Грешният брой аргументи тук чупи целият ти файл. Дори просто да махнеш този ред, което не прави класът ти работещ, поне файлът ти може да се изпълни и щеше да получиш 2-3 точки за останалите си неща.

def __init__(self):
self.number_of_players = 9
self.dealing_direction = 'rtl'
self.dealing_instructions = (1, 5)
self.cards = Deck()
class Belot:
def __init__(self):
self.number_of_players = 4
self.dealing_direction = 'ltr'
self.dealing_instructions = (2, 8)
self.cards = Deck()

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

Game.__init__() takes 4 positional arguments but 5 were given
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 114, in main
    loaded_test = importlib.import_module('test', test_module)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/tmp/d20221115-4144380-18jbk70/test.py", line 5, in <module>
    from solution import *
  File "/tmp/d20221115-4144380-18jbk70/solution.py", line 106, in <module>
    class Poker:
  File "/tmp/d20221115-4144380-18jbk70/solution.py", line 108, in Poker
    poker = Game(9, 'rtl', (1, 5), deck)

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

Валерия обнови решението на 15.11.2022 17:10 (преди над 1 година)

+import random
+
+suits = ['clubs', 'diamonds', 'hearts', 'spades']
+faces = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'A', 'J', 'Q', 'K']
+
+
+class Card:
+
+ def __init__(self, suit, face):
+ if suit in suits:
+ self.suit = suit
+ elif suit == '':
+ self.suit = None
+ if face in faces:
+ self.face = face
+ elif face == '':
+ self.face = None
+
+ def get_suit(self):
+ return self.suit
+
+ def get_face(self):
+ return self.face
+
+
+class Deck:
+
+ def __init__(self):
+ self.cards = []
+
+ for card_suit in suits:
+ for card_face in faces:
+ card = Card(card_suit, card_face)
+ self.cards.append(card)
+
+ def shuffle(self):
+ random.shuffle(self.cards)
+
+ def cut(self):
+ if len(self.cards) == 0:
+ return None
+ else:
+ return self.cards.pop(0)
+
+ def get_cards(self):
+ return self.cards
+
+
+class Player:
+ def __init__(self):
+ self.cards = []
+
+ def card_count(self):
+ if len(self.cards) < 5:
+ return
+ else:
+ return len(self.cards)
+
+ def draw_cards(self, deck):
+ self.cards.append(deck.draw_card())
+
+ def get_cards(self):
+ if len(self.cards) == 0:
+ return "Deck is empty"
+ else:
+ return self.cards
+
+
+class Game:
+
+ def __init__(self, number_of_players, dealing_direction, dealing_instructions):
+ self.number_of_players = number_of_players
+ self.dealing_direction = dealing_direction
+ self.dealing_instructions = dealing_instructions
+
+ def get_players(self):
+ if self.number_of_players == 0:
+ return None
+ else:
+ return self.number_of_players
+
+ # def prepare_deck(self):
+
+ def deal(self, player):
+ player.cards.append(self.pop(0))
+
+ def deal_card(self):
+
+ cards_deck = Deck()
+ self.dealer = []
+ self.player = []
+
+ card = random.choice(cards_deck)
+ self.dealer.append(card)
+ cards_deck.remove(card)
+
+ card = random.choice(cards_deck)
+ self.player.append(card)
+ cards_deck.remove(card)
+
+ # def deal(self):
+
+ # def get_deck(self):
+
+
+class Poker:
+ deck = Deck()
+ poker = Game(9, 'rtl', (1, 5), deck)

Предполагам, че вече си видяла, но - този ред е причината да не можем въобще да ти импортираме кода, защото не можем да дефинираме класа. Грешният брой аргументи тук чупи целият ти файл. Дори просто да махнеш този ред, което не прави класът ти работещ, поне файлът ти може да се изпълни и щеше да получиш 2-3 точки за останалите си неща.

+
+ def __init__(self):
+ self.number_of_players = 9
+ self.dealing_direction = 'rtl'
+ self.dealing_instructions = (1, 5)
+ self.cards = Deck()
+
+
+class Belot:
+ def __init__(self):
+ self.number_of_players = 4
+ self.dealing_direction = 'ltr'
+ self.dealing_instructions = (2, 8)
+ self.cards = Deck()
+
+
+

Тъжно е да видя, че един грешен ред коства целият брой точки. Моля, опитай се да предаваш решения по-рано. Ние се стремим да връщаме обратна връзка своевременно и щяхме да те алармираме, че имаш продобен фатален проблем. Ако беше пуснала sanity_test-а, който споделихме, също щеше да се справиш с проблема.