Introduction to Computer Science II

Homework and Lab 5

Due by 3:10pm on Tuesday, February 10

Reading

Read chapter 8, Case Study 8, and the week 5 lecture notes.

Lab

Monday 1:30pm-3:00 in room 512 in 14 E Jackson or via Zoom.

Problems

Solve the following by implementing the corresponding functions in homework5.py. When done, submit that file through D2L.


1.     Develop subclass oddList of list that behaves just like a list except for the peculiar behavior of the for loop:
Usage:
>>> lst = oddList([6,2,7,3,8,4,9,5])
>>> for item in lst:
    print(item)
   
6
3
9
The iteration loop pattern visits only every third item in the list.



2.    Implement an iterator for class Deck.
Usage:
>>> deck = Deck()
>>> deck.shuffle()
>>> for card in deck:
    print(card)
   
Card('8', '♡')
Card('J', '♠')
Card('K', '♣')
Card('J', '♢')
Card('8', '♠')
Card('Q', '♣')
Card('5', '♠')
Card('5', '♣')
Card('4', '♣')
Card('J', '♡')
Card('3', '♠')
Card('9', '♢')
Card('4', '♢')
Card('5', '♢')
Card('2', '♡')
Card('6', '♣')
Card('10', '♠')
Card('10', '♢')
Card('J', '♣')
Card('K', '♠')
Card('5', '♡')
Card('3', '♡')
Card('6', '♡')
Card('8', '♢')
Card('7', '♢')
Card('9', '♠')
Card('7', '♠')
Card('7', '♡')
Card('A', '♠')
Card('4', '♡')
Card('A', '♢')
Card('A', '♣')
Card('10', '♣')
Card('7', '♣')
Card('4', '♠')
Card('9', '♣')
Card('Q', '♡')
Card('3', '♢')
Card('A', '♡')
Card('Q', '♠')
Card('3', '♣')
Card('10', '♡')
Card('2', '♠')
Card('2', '♢')
Card('2', '♣')
Card('6', '♠')
Card('9', '♡')
Card('Q', '♢')
Card('6', '♢')
Card('K', '♡')
Card('K', '♢')
Card('8', '♣')


3.
    Implement an iterator for class Hand. Your iterator should visit the cards in the hand in order, where the order is determined by suit (clubs first, then diamonds, then hearts, and finally spades) and then by rank (2 through 10, and then J, Q, K, and A).
Usage:
>>> deck = Deck()
>>> deck.shuffle()
>>> hand = Hand('Player A')
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> hand.addCard(deck.dealCard())
>>> for card in hand:
    print(card)

   
Card('3', '♣')
Card('5', '♣')
Card('5', '♢')
Card('7', '♢')
Card('8', '♢')
Card('10', '♢')
Card('J', '♢')
Card('2', '♡')
Card('6', '♡')
Card('K', '♡')
Card('10', '♠')
Card('A', '♠')


4.    [Lab exercise] TBA during lab


5.    [Lab exercise] TBA during lab


6.    [Lab exercise] TBA during lab


7.    [Lab exercise] TBA during lab