請幫幫我,python 十點半遊戲

求下列題目的程式碼

題目要求:
設計十點半的遊戲賭盤
===================
撲克牌點數

牌面A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K
A-10 點數分別為 1-10點,J, K, Q 皆為 0.5點。
牌面總點數大於10.5點,即為爆牌且該方不得再要牌。
強制停止閒家要牌階段的條件
1閒家爆牌,閒家立賠且閒家不得再要牌。
2閒家總牌面為一張10搭配一張J、Q或K,莊家立賠且閒家不得再要牌。
3閒家總牌面擁有五張牌且未爆牌,莊家立賠且閒家不得再要牌。

遊戲流程 (下列範圍皆包含上限及下限):
1輸入閒家人數,人數介於1-3人。
2輸入各閒家下注點數,點數介於1-10點,每個點數之間用一個空格區隔。
3閒家各派發一張牌,每張牌之間以一個空格區隔。
4輪流進入各閒家要牌階段,輸入Y表示要牌,輸入N表示停牌,接著輸入點數,可持續要牌,直到該位閒家停牌或符合前述強制停止要牌階段的條件後,才會進入下一位閒家的要牌階段。
5各閒家皆停牌後,莊家先發一張牌給自己,之後可選擇是否要牌,直到停牌或爆牌。
6若莊家爆牌,則須賠點給未爆牌的閒家且遊戲結束。
7莊家停牌後遊戲結束,將與未爆牌閒家分別比較點數,點數較大者勝,若點數相同則視為莊家勝。
8輸出莊家與各閒家的賠點或勝點,賠點以負號表示,勝點以正號表示。

輸入範例註解:
3 閒家人數為3人
2 10 5 各閒家下注點數
Q 3 10 各閒家獲派的第一張牌
Y 第一位閒家選擇要牌
2 第一位閒家獲得2
Y 第一位閒家選擇要牌
7 第一位閒家獲得7
N 第一位閒家選擇停牌
Y 第二位閒家選擇要牌
8 第二位閒家獲得8,總點數11導致爆牌,閒家立賠且閒家不得再要牌
Y 第三位閒家選擇要牌
Q 第三位閒家獲得Q,總牌面為10和Q,莊家立賠且閒家不得再要牌
8 莊家獲得第一張牌
Y 莊家選擇要牌
2 莊家獲得2
N 莊家停牌

輸出範例註解:
Player1 -2
Player2 -10
Player3 +5
Bank +7


import random

class Cards:

def init(self,name,allcards):

self.name = name

self.allcards = allcards

def shuffle_card(self):

print(list(set(self.allcards)))

def take_card(self):

z1 = self.allcards

random.shuffle(z1)

print(f'{self.name}您随机抽取的牌为:{z1[0]}')

def draw(self):

num = int(input('请输入指定的牌顺序:').strip())

print(f'{self.name}您抽取的第{num}张牌为:{self.allcards[num - 1]}')

def sorting(self):

print(self.allcards)

def end(self):

exit()

print('1.洗牌\n2.随机抽取一张\n3.指定抽取一张\n4.从小到大排序\n5.退出\n')

n = input('请输入用户名:').strip()

while 1:

allcards = []

lis1 = ['红心', '草花', '黑桃', '方片']

for i in lis1:

for k in range(1, 14):

if k == 1:

allcards.append((i, 'A'))

elif k == 11:

allcards.append((i, 'J'))

elif k == 12:

allcards.append((i, 'Q'))

elif k == 13:

allcards.append((i, 'K'))

else:

allcards.append((i, k))

num = int(input('请输入序号选择:').strip())

s1 = Cards(n,allcards)

dic = {1: s1.shuffle_card,2: s1.take_card,3: s1.draw,4: s1.sorting,5: s1.end}

dicnum

进阶版

import random

class Poker:

rank = ['A'] + [str(i) for i in range(2,11)] + list('JQK')

color = '黑桃 红心 方片 梅花'.split()

def init(self,username):

self.username = username

self.cards = [(c,r) for c in self.color for r in self.rank]

def shuffle(self):

random.shuffle(self.cards)

return self.cards

def _random(self):

card = random.choice(self.cards)

return f'{self.username}您随机抽取的牌为: {card[0]}{card[1]}'

def appoint(self):

num = input('请输入选项:').strip()

card = self.cards[int(num)-1]

return f'{self.username}您抽取的第{num}张牌为: {card[0]}{card[1]}'

def sort(self):

self.sort_card = [(c,r)for r in self.rank for c in self.color]

return self.sort_card

def exit_out(self):

exit('成功退出程序')

def main():

choice_dict = {
1 : Poker.shuffle,

2 : Poker._random,

3 : Poker.appoint,

4 : Poker.sort,

5 : Poker.exit_out,

}

while 1:

username = input('请输入用户名:').strip()

obj = Poker(username)

print(

'''

1.洗牌

2.随机抽取一张

3.指定抽取一张

4.从小到大排序

5.退出

'''

)

choice_num = input('请输入选项:').strip()

print(choice_dictint(choice_num))

if name == 'main':

main()