def amplify(f, x):
"""Yield the longest sequence x, f(x), f(f(x)), ... that are all true values
>>> list(amplify(lambda s: s[1:], 'boxes'))
['boxes', 'oxes', 'xes', 'es', 's']
>>> list(amplify(lambda x: x//2-1, 14))
[14, 6, 2]
"""
"*** YOUR CODE HERE ***"
while x:
yield x
x = f(x)
class Person:
"""Person class.
>>> steven = Person("Steven")
>>> steven.repeat() # initialized person has the below starting repeat phrase!
'I squirreled it away before it could catch on fire.'
>>> steven.say("Hello")
'Hello'
>>> steven.repeat()
'Hello'
>>> steven.greet()
'Hello, my name is Steven'
>>> steven.repeat()
'Hello, my name is Steven'
>>> steven.ask("preserve abstraction barriers")
'Would you please preserve abstraction barriers'
>>> steven.repeat()
'Would you please preserve abstraction barriers'
"""
def __init__(self, name):
self.name = name
"*** YOUR CODE HERE ***"
self.said = 'I squirreled it away before it could catch on fire.'
def say(self, stuff):
"*** YOUR CODE HERE ***"
self.said = stuff
return stuff
def ask(self, stuff):
return self.say("Would you please " + stuff)
def greet(self):
return self.say("Hello, my name is " + self.name)
def repeat(self):
"*** YOUR CODE HERE ***"
return self.say(self.said)
class SmartFridge:
""""
>>> fridgey = SmartFridge()
>>> fridgey.add_item('Mayo', 1)
'I now have 1 Mayo'
>>> fridgey.add_item('Mayo', 2)
'I now have 3 Mayo'
>>> fridgey.use_item('Mayo', 2.5)
'I have 0.5 Mayo left'
>>> fridgey.use_item('Mayo', 0.5)
'Oh no, we need more Mayo!'
>>> fridgey.add_item('Eggs', 12)
'I now have 12 Eggs'
>>> fridgey.use_item('Eggs', 15)
'Oh no, we need more Eggs!'
>>> fridgey.add_item('Eggs', 1)
'I now have 1 Eggs'
"""
def __init__(self):
self.items = {}
def add_item(self, item, quantity):
"*** YOUR CODE HERE ***"
if item in self.items:
self.items[item] += quantity
else:
self.items[item] = quantity
return 'I now have ' + str(self.items[item]) + ' ' + item
def use_item(self, item, quantity):
"*** YOUR CODE HERE ***"
self.items[item] -= quantity
if self.items[item] <= 0:
self.items[item] = 0
return 'Oh no, we need more ' + item + '!'
else:
return 'I have ' + str(self.items[item]) + ' ' + item + ' left'
class CucumberGame:
"""Play a round and return all winners so far. Cards is a list of pairs.
Each (who, card) pair in cards indicates who plays and what card they play.
>>> g = CucumberGame()
>>> g.play_round(3, [(3, 4), (0, 8), (1, 8), (2, 5)])
>>> g.winners
[1]
>>> g.play_round(1, [(3, 5), (1, 4), (2, 5), (0, 8), (3, 7), (0, 6), (1, 7)])
It is not your turn, player 3
It is not your turn, player 0
The round is over, player 1
>>> g.winners
[1, 3]
>>> g.play_round(3, [(3, 7), (2, 5), (0, 9)]) # Round is never completed
It is not your turn, player 2
>>> g.winners
[1, 3]
"""
def __init__(self):
self.winners = []
def play_round(self, starter, cards):
r = Round(starter)
for who, card in cards:
try:
r.play(who, card)
except AssertionError as e:
print(e)
if r.winner != None:
self.winners.append(r.winner)
class Round:
players = 4
def __init__(self, starter):
self.starter = starter
self.next_player = starter
self.highest = -1
self.winner = None
def play(self, who, card):
assert not self.is_complete(), f'The round is over, player {who}'
assert who == self.next_player, f'It is not your turn, player {who}'
self.next_player = ______________________________________
if card >= self.highest:
______________________________________
______________________________________
if ______________________________________:
______________________________________
def is_complete(self):
""" Checks if a game could end. """
return ______________________________________
07-10
1059
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-10
262
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-12
602
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-27
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交