PyQを続けた結果、どこまでクエストが消化できたのかとか
何ができるようになったのかとかを書きます。
(こっから11/2)
今先ほど、PyQを始めました。
理由は、C++という言語そのものに縛られたくないから。
言語は選択肢にしたいんだけれども、使う場面がないとどんどん置いて行かれてしまうので、Pythonも触ることにしました。実務で役立つかは謎です。
ただ、Pythonでシューティングとか作れると楽しいだろうぁ……。UnitTestとかが楽そうだし、ロジックの確認とかがスクリプト系なのでMATLABと同じように扱えそうでよさそうだな、と。
(こっから今書いてる部分)
で、どれくらいやったか。PyQのいいところはそのあたりが記録されているところ。
土日挟んで1週間で7.7時間やってこのくらいでした!
で、木曜日にポーカーの勝率計算をするスクリプトが書きたいなと思い、デッキをシャッフルしてドローするところまで実装してみました。プラスアルファでクラスの作成方法だけ勉強しています。
こっからモンテカルロ的に勝率計算をして、行列表示してみようかなと思います!では!
playingcard.py import random suitType = ['Spade', 'Heart', 'Club', 'Diamond'] numberType = [2,3,4,5,6,7,8,9,10,11,12,13,14] class deck: def initialize(self): self.sortedDeck = [] for suit in suitType: for number in numberType: self.sortedDeck.append({'Suit':suit,'Number':number}) def shuffle(self): self.shuffledDeck = [] for _ in range(len(self.sortedDeck)): card = self.sortedDeck.pop(random.randint(0, len(self.sortedDeck)-1)) self.shuffledDeck.append(card) def draw(self): return self.shuffledDeck.pop() def __init__(self): self.initialize() class view: def __init__(self): dummy = 0 def print(self, hand): stringHand = [] for card in hand: if card['Number'] == 14: number = 'A' elif card['Number'] == 13: number = 'K' elif card['Number'] == 12: number = 'Q' elif card['Number'] == 11: number = 'J' elif card['Number'] == 10: number = 'T' else: number = str(card['Number']) stringHand.append((card['Suit'],str(number))) print(stringHand) def main(): # 使用法的な感じ # deckクラスを生成、shuffleしてdrawする # viewerはAKQJTを1文字化する # card(hand配列の1要素)は辞書型であり、 # keyは'Suit':strと'Number':int gameDeck = deck() viewer = view() gameDeck.shuffle() hand = [] hand.append(gameDeck.draw()) hand.append(gameDeck.draw()) viewer.print(hand) if __name__ == '__main__': main()