總結
生成52張牌–不含大小王
洗牌進入遊戲
發牌比較大小
出結果
在實踐過程中,對list型別算是有了充分的理解,但是對dict沒太實踐,硬用了下,後面會進行別的實踐,下面是具體**,後面學了函式和物件導向,以及其他好用的方法都會對其公升級,也希望大家給出寶貴的意見。
遊戲規則:
一付撲克牌,去掉大小王,每個玩家發3張牌,最後比大小,看誰贏。
有以下幾種牌:
豹子:三張一樣的牌,如3張6.
順金:又稱同花順,即3張同樣花色的順子, 如紅桃 5、6、7
順子:又稱拖拉機,花色不同,但是順子,如紅桃5、方片6、黑桃7,組成的順子
對子:2張牌一樣
單張:單張最大的是a
這幾種牌的大小順序為,豹子》順金》順子》對子》單張—未加同花
具體**實現如下
import random
# 撲克牌數值
poke_num_list = [i for i in range(1, 14)]
# 撲克牌花色
poke_color_list = ["黑桃", "紅桃", "梅花", "方片"]
# 1生成52張牌--不含大小王
total_poke_list = [[color, num] for num in poke_num_list for color in poke_color_list]
# 2洗牌
random.shuffle(total_poke_list)
# 3進入遊戲
players = input("請輸入參與人數(大於1):")
players_num = int(players)
while true:
if not players.isdecimal():
print("請輸入正確的資料!")
continue
elif(players_num <= 1):
print("請輸入參與人數要大於1")
continue
else:
choice = input("您是否開始遊戲:(y/n)".upper())
if choice not in :
print("輸入有誤,你必須輸入,y或者n")
continue
if choice == "y":
print("---遊戲開始---")
break
if choice == "n":
print("---退出遊戲---")
exit()
# 4發牌
game_pokes_types = {} # 玩家對應得牌:5豹子4同花順3順子2對子1單張
for i in range(0,players_num):
player = f"player"
player_pokes = random.sample(total_poke_list,3)
print(player+"獲得三張牌:")
print(player_pokes)
# 判斷牌種
p1 = int(player_pokes[0][1])
p2 = int(player_pokes[1][1])
p3 = int(player_pokes[2][1])
max = max([p1,p2,p3])
min = min([p1,p2,p3])
if player_pokes[0][1] == player_pokes[1][1] == player_pokes[2][1] :
game_pokes_types[i] = [player_pokes,5]
elif player_pokes[0][0] == player_pokes[1][0] == player_pokes[2][0] and max - min == 2:
game_pokes_types[i] = [player_pokes,4]
elif max - min == 2:
game_pokes_types[i] = [player_pokes,3]
elif player_pokes[0][1] == player_pokes[1][1] or player_pokes[1][1] == player_pokes[2][1] or player_pokes[0][1] == player_pokes[2][1]:
game_pokes_types[i] = [player_pokes,2]
else:
game_pokes_types[i] = [player_pokes,1]
del max,min,p1,p2,p3
#刪除發出去的牌
for poke in player_pokes:
total_poke_list.remove(poke)
# print(game_pokes_types)
# 5比較大小
winner =
for n in game_pokes_types:
if winner:
if game_pokes_types[n][1] > winner[1][1]:
winner = [n, game_pokes_types[n]]
elif game_pokes_types[n][1] == winner[1][1]:
winner_number =
poke_number =
#排序for j in range(0,len(game_pokes_types[n][0])-1):
if j == 0:
if j >= 1 :
if winner[1][0][j][1] > winner_number[j-1]:
winner_number[j-1] = winner[1][0][j][1]
if game_pokes_types[n][0][j][1] > poke_number[j-1]:
poke_number[j-1] = game_pokes_types[n][0][j][1]
#比較大小,平局判斷未加
for k in range(0,len(poke_number)-1):
if poke_number[k] > winner_number[k]:
winner = [n, game_pokes_types[n]]
del winner_number,poke_number
else:
continue
else:
winner = [n,game_pokes_types[n]]
print(winner)
python物件導向總結 Python物件導向總結
python 物件導向 oop 1 物件導向 是乙個更大封裝,把乙個物件封裝多個方法 2 類 是對一些具有相同特徵或行為的事物的乙個統稱,是抽象的,不能直接使用 特徵被稱為屬性 行為被稱為方法 3 物件 是由類建立出來的乙個具體的存在,可以直接使用 先有類再有物件,類只有乙個,而物件可以有多個 類中...
python學習總結 物件導向高階
類屬性和例項屬性關係 1 類屬性和例項屬性關係 1 例項屬性 例項物件獨有的屬性 2 類屬性 類名訪問類屬性 3 例項中無同名屬性時,可訪問到類屬性,當定義同名例項屬性時,則無法訪問 4 常用的查詢指令 1 vars 檢視例項內屬性 2 dir 顯示類屬性和所有例項屬性 3 type 顯示型別 方法...
python物件導向學習 python物件導向學習
物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。物件導向三個概念 1.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...