Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/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 For循环不执行(每次列表中出现“11”时尝试更改变量)21点_Python - Fatal编程技术网

Python For循环不执行(每次列表中出现“11”时尝试更改变量)21点

Python For循环不执行(每次列表中出现“11”时尝试更改变量)21点,python,Python,我需要编码一种方法来确定21点手牌是否为半身像,如果不是,我需要返回手牌的总和。我的for循环似乎不起作用。如果手上有一个11(Ace),并且手的原始和大于21,我试图从手的和中减去10。我知道现在变量'newsum'将被打印两次。这是为了确定for循环是否正常运行 blackjack = [5,11,7] newsum = sum(blackjack) if sum(blackjack) <= 21: print(sum(blackjack)) elif sum(blackjac

我需要编码一种方法来确定21点手牌是否为半身像,如果不是,我需要返回手牌的总和。我的for循环似乎不起作用。如果手上有一个11(Ace),并且手的原始和大于21,我试图从手的和中减去10。我知道现在变量'newsum'将被打印两次。这是为了确定for循环是否正常运行

blackjack = [5,11,7]
newsum = sum(blackjack)
if sum(blackjack) <= 21:
    print(sum(blackjack))
elif sum(blackjack) > 21:
    for n in blackjack:
        if n == 11:
            newsum = newsum - 10
            print(newsum)
        break
        newsum <= 21
    if newsum <= 21:
        print(newsum)
    else:
        print("BUST")
blackjack=[5,11,7]
newsum=sum(21点)
如果和(21点)21:
对于21点中的n:
如果n==11:
newsum=newsum-10
印刷品(新闻)
打破

newsum我相信您的for循环正在执行,只是您的break语句在第一次循环时就脱离了循环。您可能希望将break语句缩进if语句。

尝试以下操作:

blackjack = [5, 11, 7]
newsum = sum(blackjack)
if sum(blackjack) >= 21:
    for card in blackjack:
        if card == 11:
            newsum = newsum - 10
    if newsum >= 21:
        print(f"BUST (Your Hand: {sum(blackjack)})")
    else:
        print("Your Hand:", newsum)
else:
    print("Your Hand:", sum(blackjack))

实际上,您只需要删除break语句。

您的循环似乎在检查
blackjack
结构中是否存在
11
——为什么不直接使用
in
操作符呢?为什么会增加时间复杂度?您希望得到什么结果?这就是问题所在,谢谢!