1.try:的語句出現(xiàn)異常才會(huì)執(zhí)行except后的語句容握,如果正常嚼沿,則執(zhí)行完try后執(zhí)行else估盘。另外,finally語句不管有無異常都會(huì)執(zhí)行骡尽。
- “四川麻將”共有108張牌忿檩,分為“筒”、“條”爆阶、“萬”三種類型燥透,每種類型的牌有1~9的點(diǎn)數(shù),
每個(gè)點(diǎn)數(shù)有4張牌辨图;游戲通常有4個(gè)玩家班套,游戲開始的時(shí)候,有一個(gè)玩家會(huì)拿到14張牌(首家)故河,
其他三個(gè)玩家每人13張牌吱韭。要求用面向?qū)ο蟮姆绞絼?chuàng)建麻將牌和玩家并實(shí)現(xiàn)洗牌、摸牌以及玩家按照
類型和點(diǎn)數(shù)排列手上的牌的操作,最后顯示出游戲開始的時(shí)候每個(gè)玩家手上的牌理盆。
from random import randrange, shuffle
class Piece(object):
def __init__(self, suite, face):
self._suite = suite
self._face = face
@property
def suite(self):
return self._suite
@property
def face(self):
return self._face
def __str__(self):
return str(self._face) + self._suite
class Mahjong(object):
def __init__(self):
self._pieces = []
self._index = 0
suites = ['筒', '條', '萬']
for suite in suites:
for face in range(1, 10):
for _ in range(4):
piece = Piece(suite, face)
self._pieces.append(piece)
def shuffle(self):
self._index = 0
shuffle(self._pieces)
@property
def next(self):
piece = self._pieces[self._index]
self._index += 1
return piece
@property
def has_next(self):
return self._index < len(self._pieces)
class Player(object):
def __init__(self, name):
self._name = name
self._pieces_on_hand = []
@property
def name(self):
return self._name
@property
def pieces(self):
return self._pieces_on_hand
def get(self, piece):
self._pieces_on_hand.append(piece)
def drop(self, index):
return self._pieces_on_hand.pop(index)
def clear(self):
self._pieces_on_hand.clear()
def sort(self):
self._pieces_on_hand.sort(key=get_key)
def get_key(piece):
return piece.suite, piece.face
def display(player):
print(player.name, end=': ')
for piece in player.pieces:
print(piece, end=' ')
print()
def main():
mahjong = Mahjong()
mahjong.shuffle()
players = [Player('東邪'), Player('西毒'), Player('南帝'), Player('北丐')]
for _0 in range(3):
for player in players:
for _1 in range(4):
player.get(mahjong.next)
players[0].get(mahjong.next)
for player in players:
player.get(mahjong.next)
for player in players:
player.sort()
display(player)
if __name__ == '__main__':
main()
東邪: 1萬 1條 3條 4條 4條 8條 9條 1筒 2筒 2筒 5筒 6筒 9筒 9筒
西毒: 3萬 5萬 7萬 9萬 9萬 7條 8條 9條 3筒 3筒 5筒 5筒 7筒
南帝: 3萬 3萬 5萬 6萬 1條 1條 4條 5條 6條 9條 4筒 7筒 9筒
北丐: 5萬 8萬 1條 2條 3條 3條 6條 7條 7條 1筒 3筒 8筒 8筒
3.random
import random
print( random.randint(1,10) ) # 產(chǎn)生 1 到 10 的一個(gè)整數(shù)型隨機(jī)數(shù)
print( random.random() ) # 產(chǎn)生 0 到 1 之間的隨機(jī)浮點(diǎn)數(shù)
print( random.uniform(1.1,5.4) ) # 產(chǎn)生 1.1 到 5.4 之間的隨機(jī)浮點(diǎn)數(shù)痘煤,區(qū)間可以不是整數(shù)
print( random.choice('tomorrow') ) # 從序列中隨機(jī)選取一個(gè)元素
print( random.randrange(1,100,2) ) # 生成從1到100的間隔為2的隨機(jī)整數(shù)
a=[1,3,5,6,7] # 將序列a中的元素順序打亂
random.shuffle(a)
print(a)
import string,random
capta=''
words=''.join((string.ascii_letters,string.digits))
for i in range(6):
capta+=random.choice(words)
print(capta)
注:string.ascii_letters 生成26個(gè)大小寫英文字母猿规,string.digits生成數(shù)字0123456789
random.choice ()衷快,隨機(jī)選取字符串、列表等