1

我一直在尝试用python制作一个简单的二十一点游戏,我似乎被卡住了,我的代码如下:

from random import choice

def deck():
    cards = range(1, 12)
    return choice(cards)

def diack():
    card1= deck()
    card2 = deck()
    hand = card1 + card2
    print hand
    if hand < 21:
         print raw_input("Would you like to hit or stand?")
         if "hit":
             return hand + deck()
         elif "stand": 
             return hand

当我运行时,它似乎对“命中”有效,但是当我输入“站立”时,它似乎也“命中”。正如您现在可能知道的那样,我对编程非常陌生。你们能否帮助我指出如何让我的游戏正常运行的正确方向(我想尽可能多地使用我的代码)。

4

2 回答 2

5

if "hit"只是测试字符串是否"hit"存在,它确实存在。因此,该elif语句永远不会执行。

您需要在变量中捕获用户输入并对其进行测试:

choice = raw_input("Would you like to hit or stand?")
print choice
if choice == "hit":
    return hand + deck()
elif choice == "stand": 
    return hand
于 2012-09-28T20:24:47.003 回答
4

假设你得到正确的缩进:

print raw_input("Would you like to hit or stand?")
if "hit":
    return hand + deck()
elif "stand": 
    return hand

if只是在检查字符串是否"hit"为真。所有非空字符串都是真的,并且"hit"是非空的,所以这总是会成功的。

你想要的是这样的:

cmd = raw_input("Would you like to hit or stand?")
if cmd == "hit":
    return hand + deck()
elif cmd == "stand": 
    return hand

现在您正在检查的结果是否是您想要raw_input的字符串。"hit"

于 2012-09-28T20:24:18.787 回答