【问题标题】:How do I set a limit for a variable in Python?如何在 Python 中为变量设置限制?
【发布时间】:2020-07-24 16:16:27
【问题描述】:
import random

dealer = random.randint(10, 21)
begin = random.randint(1, 14)
card = random.randint(1, 14)
limit = int(21)
print(begin)
i = input('Hit or Stay?').lower()

while i == "hit":
    begin += random.randint(1, 14)
    print(begin)
    i = input('Hit or Stay?').lower()

if begin == 21:
    print('Wow, you win!')
elif i == "stay":
    if dealer >= begin:
        print('You lose')
        print(dealer)
    else:
        print('You win')
        print(dealer)
elif begin >= limit:
    print('You lose')

我目前正在尝试制作 21 点二十一点游戏(我自己的转折点)。 但是,我遇到了一个问题。二十一点的规则是,如果你的手牌超过了 21,你就输了。我很难做到这一点。目前,python 只打印“你输了!”当玩家越过数字 21 并保持手牌时。 达到21/获胜时的电流输出:

Starting Hand: 13
Hit or Stay?hit
Current Hand: 15
Hit or Stay?hit
Current Hand: 21
Hit or Stay?stay
Wow, you win!

预期输出:

Starting Hand: 13
Hit or Stay?hit
Current Hand: 21 
You Win!!!

超过 21 的电流输出:

Starting Hand:  4
Hit or Stay?hit
Current Hand:  13
Hit or Stay?hit
Current Hand:  24
Hit or Stay?stay
You lose because you went over 21 haha

预期输出:

Starting Hand: 20
Hit or Stay?hit
Current Hand: 25
You lose because you went over 21 hahaha

我希望有人能够修复我的代码:

【问题讨论】:

  • 您可以在 for 循环中添加一个条件来检查数字是否为
  • if-else块不应该缩进,所以它会在while块里面吗?
  • 我知道你说过这是你自己的二十一点,但你不应该考虑到 A(1 或 11)和面牌都值 10 点吗?另外作为旁注,在您当前的解决方案中,A 被选中的机会比任何其他牌都高。

标签: python python-3.x random while-loop blackjack


【解决方案1】:
import random

def check(begin):
    is_end = True
    if begin == 21:
        print('Wow, you win!')
    elif i == "stay":
        if dealer >= begin:
            print('You lose')
            print(dealer)
        else:
            print('You win')
            print(dealer)
    elif begin >= limit:
        print('You lose')
    else:
        is_end=False
    return is_end

dealer = random.randint(10, 21)
begin = random.randint(1, 14)
card = random.randint(1, 14)
limit = int(21)
print(begin)
i = input('Hit or Stay?').lower()

while i == "hit":
    begin += random.randint(1, 14)
    print(begin)
    if check(begin):
        break
    i = input('Hit or Stay?').lower()

【讨论】:

  • 这行得通,但你能向我解释一下它是如何工作的吗? def 检查有什么作用?编辑:stay 命令不再起作用。它只是完成了这个过程。
【解决方案2】:
import random

dealer = random.randint(10, 21)
begin = random.randint(1, 14)
card = random.randint(1, 14)
limit = int(21)
print(begin)

i = input('Hit or Stay?').lower()

while begin < limit:
    begin += random.randint(1, 14)
    print(begin)
    i = input('Hit or Stay?').lower()

    if begin == limit:
      print('You win')
    else:
      print('You lose')
      break

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多