Opgepast! Het lijkt erop dat je Dodona gebruikt binnen een andere webpagina waardoor mogelijk niet alles goed werkt. Laat dit weten aan je lesgever zodat hij het probleem kan oplossen door een instelling in de leeromgeving aan te passen. Ondertussen kan je op deze link klikken om Dodona te openen in een nieuw venster.
Veilingsysteem
Log in om je oplossingen te testen.
class Lot:
"""
Represents an item (or set of items) in an auction: a lot.
Attributes:
- number (int): A unique identifying number for the lot.
- description (str): A description of the lot.
- highest_bid (Bid): The current highest bid for this lot.
"""
def __init__(self, number, description):
"""
Construct a Lot, setting its number and description.
Parameters:
- number (int): The lot number.
- description (str): A description of this lot.
"""
self.number = number
self.description = description
self.highest_bid = None
def bid_for(self, bid):
"""
Attempt to bid for this lot. A successful bid
must have a value higher than any existing bid.
Parameters:
- bid (Bid): A new bid.
Returns:
- bool: True if the bid is successful, False otherwise.
"""
if self.highest_bid is None:
# There is no previous bid.
self.highest_bid = bid
return True
elif bid.value > self.highest_bid.value:
# The bid is better than the previous one.
self.highest_bid = bid
return True
else:
# The bid is not better.
return False
def __str__(self):
"""
Return a string representation of this lot's details.
Returns:
- str: A string representation of this lot.
"""
details = f"{self.number}: {self.description}"
if self.highest_bid is not None:
details += f" Bid: {self.highest_bid.value}"
else:
details += " (No bid)"
return details
def get_number(self):
"""
Return the lot's number.
Returns:
- int: The lot's number.
"""
return self.number
def get_description(self):
"""
Return the lot's description.
Returns:
- str: The lot's description.
"""
return self.description
def get_highest_bid(self):
"""
Return the highest bid for this lot.
This could be None if there is no current bid.
Returns:
- Bid or None: The highest bid for this lot, or None if there is no current bid.
"""
return self.highest_bid
class Bid:
"""
Represents an auction bid.
It contains a reference to the Person bidding and the amount bid.
Attributes:
- bidder (Person): The person making the bid.
- value (int): The value of the bid.
"""
def __init__(self, bidder, value):
"""
Create a bid.
Parameters:
- bidder (Person): Who is bidding for the lot.
- value (int): The value of the bid.
"""
self.bidder = bidder
self.value = value
def get_bidder(self):
"""
Get the bidder.
Returns:
- Person: The bidder.
"""
return self.bidder
def get_value(self):
"""
Get the value of the bid.
Returns:
- int: The value of the bid.
"""
return self.value
class Person:
"""
Represents a person who participates in an auction.
Attributes:
- name (str): The name of the person.
"""
def __init__(self, name):
"""
Create a new person with the given name.
Parameters:
- name (str): The person's name.
"""
self.name = name
def get_name(self):
"""
Get the person's name.
Returns:
- str: The person's name.
"""
return self.name
class Auction:
"""
Represents an auction.
Attributes:
- lots (list): The list of Lots in this auction.
- next_lot_number (int): The number that will be given to the next lot entered into this auction.
"""
def __init__(self):
"""
Create a new auction.
"""
self.lots = []
self.next_lot_number = 1
def enter_lot(self, description):
"""
Enter a new lot into the auction.
Parameters:
- description (str): A description of the lot.
"""
self.lots.append(Lot(self.next_lot_number, description))
self.next_lot_number += 1
def show_lots(self):
"""
Show the full list of lots in this auction.
"""
for lot in self.lots:
print(lot.__str__())
def make_a_bid(self, lot_number, bidder, value):
"""
Make a bid for a lot. A message is printed indicating whether the bid is successful or not.
Parameters:
- lot_number (int): The lot being bid for.
- bidder (Person): The person bidding for the lot.
- value (int): The value of the bid.
"""
selected_lot = self.get_lot(lot_number)
if selected_lot is not None:
bid = Bid(bidder, value)
successful = selected_lot.bid_for(bid)
if successful:
print("The bid for lot number", lot_number, "was successful.")
else:
highest_bid = selected_lot.get_highest_bid()
print("Lot number:", lot_number, "already has a bid of:", highest_bid.get_value())
def get_lot(self, lot_number):
"""
Return the lot with the given number. Return None if a lot with this number does not exist.
Parameters:
- lot_number (int): The number of the lot to return.
Returns:
- Lot or None: The lot with the given number, or None if it does not exist.
"""
for lot in self.lots:
if lot.get_number() == lot_number:
return lot
print("Lot number:", lot_number, "does not exist.")
return None
Je kunt zo vaak indienen als je wenst. Er wordt enkel rekening gehouden met je laatst ingediende oplossing.
Log in om je oplossingen te testen.
Python sandbox
In dit venster kan je Python-code uitvoeren zonder iets te moeten installeren. De code die je hier schrijft wordt niet automatisch ingediend in Dodona. Deze functie is nog in volle ontwikkeling. We horen graag je suggesties en problemen via het contactformulier.