1. 程式人生 > 程式設計 >python小程式之4名牌手洗牌發牌問題解析

python小程式之4名牌手洗牌發牌問題解析

本文為大家解析了python實現4名牌手洗牌發牌的問題,供大家參考,具體內容如下

編寫程式, 4名牌手打牌,計算機隨機將52張牌(不含大小鬼)發給4名牌手,在螢幕上顯示每位牌手的牌。建立函式gen_pocker()交換牌的順序,函式getColor()獲取牌的花色,函式getValue()獲取牌的牌面大小,函式getPuk()獲取花色和牌面大小的組合

執行效果

[51,45,31,4,48,26,11,2,24,44,22,21,16,41,50,47,13,25,17,29,42,27,19,33,5,40,1,8,30,18,10,9,3,14,46,36,35,12,15,20,34,38,39,43,37,32,7,28,23,49,6]

牌手1:方塊4 方塊8 方塊A 方塊Q 紅桃3 紅桃5 紅桃J 草花6 草花A 黑桃10 黑桃4 黑桃5 黑桃K

牌手2:方塊6 方塊J 方塊K 紅桃10 紅桃2 紅桃9 紅桃A 紅桃Q 草花4 黑桃2 黑桃3 黑桃6 黑桃7

牌手3:方塊10 方塊2 方塊5 方塊7 紅桃6 紅桃7 紅桃K 草花2 草花J 草花K 草花Q 黑桃J 黑桃Q

牌手4:方塊3 方塊9 紅桃4 紅桃8 草花10 草花3 草花5 草花7 草花8 草花9 黑桃8 黑桃9 黑桃A

import random
def gen_pocker(n):
  random.shuffle(n)
  return n
#產生牌的花色
def getColor(n):
  if(n>=0 and n<=12):
    return "梅花"
  elif(n>=13 and n<=25):
    return "方塊"
  elif(n>=26 and n<=38):
    return "紅桃"
  elif(n>=39 and n<=51):
    return "黑桃"
def getValue(n):
  if n==0 or n==13 or n==26 or n==39:
    return 'A'
  elif n==12 or n==38 or n==25 or n==51:
    return 'K'
  elif n==11 or n==37 or n==24 or n==50:
    return 'Q'
  elif n==10 or n==36 or n==23 or n==49:
    return 'J'
  else:
    return n%13
def getPuk():
  List=[]    #代表一副牌,現在表示還沒有牌,只是一個牌盒
  for i in range(0,52):
    List.append(i)  #按順序往牌盒中放入52張牌
  List=gen_pocker(List)  #將牌盒中的牌打亂順序
  List1=[]       #定義4個牌手
  List2=[]    
  List3=[]
  List4=[]
  for i in range(0,52): #實現發牌
    if i<13:    #打亂後的前13張牌發給牌手1,實現牌手1手牌中如何含有花色和數字
      List1.append(getColor(List[i])+str(getValue(List[i])))
    elif i<26:
      List2.append(getColor(List[i])+str(getValue(List[i])))
    elif i<39:
      List3.append(getColor(List[i])+str(getValue(List[i])))
    else:
      List4.append(getColor(List[i])+str(getValue(List[i])))
  print(List)
  print("牌手1",List1)
  print("牌手2",List2)
  print("牌手3",List3)
  print("牌手4",List4)
getPuk()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。