Python 2.7 如何在Ipy笔记本(Jupyter)中保存值
我正试图编写一个python代码来模拟21点,并使用各种函数来处理、打击、站立等。我的“手”无法在调用不同函数之间节省 例如,如果我调用deal(),它返回我的牌和庄家的牌,那么我调用hit(),它返回一张牌,而不是我得到的牌和新牌 我想知道如何才能让它保存我的手,因为我认为使用append只会在我的手上添加卡片 这是我的密码:Python 2.7 如何在Ipy笔记本(Jupyter)中保存值,python-2.7,Python 2.7,我正试图编写一个python代码来模拟21点,并使用各种函数来处理、打击、站立等。我的“手”无法在调用不同函数之间节省 例如,如果我调用deal(),它返回我的牌和庄家的牌,那么我调用hit(),它返回一张牌,而不是我得到的牌和新牌 我想知道如何才能让它保存我的手,因为我认为使用append只会在我的手上添加卡片 这是我的密码: import random import itertools deck = [val for val in range(2,12) for _ in range(4
import random
import itertools
deck = [val for val in range(2,12) for _ in range(4)]
for i in range(12):
deck.append(10)
player_hand=[]
dealer_hand=[]
def deal():
player_hand = []
dealer_hand = []
carddeal1 = random.sample(deck,2)
carddeal2 = random.sample(deck,2)
for i in range(2):
deck.remove(carddeal1[i])
deck.remove(carddeal2[i])
player_hand.append(carddeal1[i])
dealer_hand.append(carddeal2[i])
evaluate(player_hand)
evaluate(dealer_hand)
return player_hand,dealer_hand
def hit():
cardhit = random.sample(deck,1)
deck.remove(cardhit[0])
player_hand.append(cardhit[0])
return player_hand
def dealer_hit():
cardhit = random.sample(deck,1)
deck.remove(cardhit[0])
dealer_hand.append(cardhit[0])
return dealer_hand
def evaluate(hand):
if 11 in hand and sum(hand)>21:
if sum(hand)>31:
return "bust"
else:
return "okay"
elif sum(hand)==21:
print "21!!!!"
else:
if sum(hand)>21:
return "bust"
else:
return "okay"
def stand():
if sum(dealer_hand)>16 and sum(dealer_hand)>sum(player_hand) and
evaluate(dealer_hand)!="bust":
print "dealer wins, type deal() to restart"
elif sum(dealer_hand)>16 and sum(dealer_hand)<sum(player_hand) and
evaluate(player_hand)!="bust":
print "You win! type deal() to restart"
else:
dealer_hit()
stand()
随机导入
进口itertools
甲板=[val代表范围(2,12)内的val,val代表范围(4)]
对于范围(12)内的i:
甲板。附加(10)
玩家手=[]
经销商手=[]
def deal():
玩家手=[]
经销商手=[]
carddeal1=随机样本(组,2)
carddeal2=随机样本(组,2)
对于范围(2)中的i:
甲板。移除(carddeal1[i])
甲板。移除(carddeal2[i])
玩家手追加(carddeal1[i])
经销商手牌附加(carddeal2[i])
评估(玩家手)
评估(经销商手)
返回玩家手、庄家手
def hit():
cardhit=随机样本(组,1)
套牌。移除(cardhit[0])
玩家\手牌追加(卡片命中[0])
还手
def经销商_hit():
cardhit=随机样本(组,1)
套牌。移除(cardhit[0])
经销商手牌追加(cardhit[0])
退手
def评估(手动):
如果手头有11个,且总和(手头)大于21:
如果总和(手数)>31:
返回“半身像”
其他:
返回“好的”
elif总和(手)==21:
打印“21!!!!”
其他:
如果总和(手数)>21:
返回“半身像”
其他:
返回“好的”
def stand():
如果sum(庄家手)>16,sum(庄家手)>sum(玩家手)和
评估(经销商手)=“半身像”:
打印“经销商获胜,键入deal()重新启动”
elif sum(经销商手)>16和sum(经销商手)