python二十一点游戏,似乎忽略了'如果'的说法

时间:2012-09-28 20:21:39

标签: python if-statement python-2.7

我一直在尝试在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

当我跑的时候它似乎适用于“击中”但是当我输入“立场”时它似乎也“击中”了。正如你现在可能知道的那样,我对编程非常陌生。你们能帮助我指出如何使我的游戏工作正确的方向(我想尽可能多地使用我的代码)。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

假设你得到缩进:

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

您的if只是检查字符串"hit"是否为真。所有非空字符串均为true,"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",这就是您想要的。