Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何在Ipy笔记本(Jupyter)中保存值_Python 2.7 - Fatal编程技术网

Python 2.7 如何在Ipy笔记本(Jupyter)中保存值

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

我正试图编写一个python代码来模拟21点,并使用各种函数来处理、打击、站立等。我的“手”无法在调用不同函数之间节省

例如,如果我调用deal(),它返回我的牌和庄家的牌,那么我调用hit(),它返回一张牌,而不是我得到的牌和新牌

我想知道如何才能让它保存我的手,因为我认为使用append只会在我的手上添加卡片

这是我的密码:

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(经销商手)