我一直在尝试在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
当我跑的时候它似乎适用于“击中”但是当我输入“立场”时它似乎也“击中”了。正如你现在可能知道的那样,我对编程非常陌生。你们能帮助我指出如何使我的游戏工作正确的方向(我想尽可能多地使用我的代码)。
答案 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"
,这就是您想要的。