python學習體驗總結及面向過程炸金花實踐

2021-10-16 12:44:18 字數 3340 閱讀 2490

總結

生成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.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...