python练习题:使用列表实现斗地主的发牌设计
1.使用列表完成牌的设计
2.使用3个列表实现每个人牌的设计
"""
♠:从小到大排序:1—13
♥:从小到大排序:14—26
♣:从小到大排序:17—39
♦:从小到大排序:40—52
小王:53
大王:54
"""
import random
#初始化一副牌
def init_cards():
cards_list=[]
for i in range(54):
cards_list.append(i+1)
return cards_list
def swap(the_list,num1,num2):
temp = the_list[num1]
the_list[num1] = the_list[num2]
the_list[num2] = temp
#洗牌
def make_cards_random(cards_list):
for i in range(100):
a = random.randint(0,53)
b = random.randint(0,53)
swap(cards_list,a,b)
#底牌
def back_cards(list_cards):
index_a = random.randint(36,53)
index_b = random.randint(18,35)
index_c = random.randint(0,17)
get_a = list_cards.pop(index_a)
get_b = list_cards.pop(index_b)
get_c = list_cards.pop(index_c)
return get_a,get_b,get_c
#发牌给三个人
def get_cards(cards_list):
return cards_list[0:17],cards_list[17:34],cards_list[34:51]
def to_card(number):
if number % 13 == 1:
number = "A"
elif number % 13 == 11:
number = "J"
elif number % 13 == 12:
number = "Q"
elif number % 13 == 0:
number = "K"
else:
number %=13
return str(number)
#把数字装换成对应的花色+数字
def show_cards(list_cards):
for i in list_cards:
if i > 0 and i <= 13:
print ("♠" + to_card(i),end=' ')
elif i >13 and i <= 26:
print("♥" + to_card(i),end=' ')
elif i>26 and i <= 39:
print("♣" + to_card(i),end=' ')
elif i>39 and i <= 52:
print("♦" + to_card(i),end=' ')
elif i==53:
print("小王",end=' ')
elif i==54:
print("大王",end=' ')
else:
print("出错啦!",end=' ')
#开始游戏
def play_game():
cards = init_cards()
make_cards_random(cards)
back = back_cards(cards)
person_1,person_2,person_3=get_cards(cards)
for i in back:
person_1.append(i)
print("\n底牌是:")
show_cards(back)
print("\n地主牌是:")
show_cards(person_1)
print("\n农民1的牌是:")
show_cards(person_2)
print("\n农民2的牌是:")
show_cards(person_3)
if __name__ == '__main__':
play_game()
运行结果: