def hit():
global hitsum
hitsum = 0
v=random.choice(cards)
c=random.choice(suits)
if v=="Ace":
hitsum=hitsum+1
print "You were dealt","a",v,"of",c
elif v=="Jack":
hitsum=hitsum+11
print "You were dealt","a",v,"of",c
elif v=="Queen":
hitsum=hitsum+12
print "You were dealt","a",v,"of",c
elif v=="King":
hitsum=hitsum+13
print "You were dealt","a",v,"of",c
else:
hitsum=hitsum+v
print "You were dealt","a",v,"of",c
computer()
choice=raw_input("Would you like to hit or stay? ")
if choice=="hit":
hit()
totalsum = hitsum + usersum
print "Your total is", totalsum
elif choice=="stay":
totalsum=usersum
else:
print "Invalid request"
此代码摘自我的二十一点游戏。我创建了一个用户定义的函数,用于在有人要求命中时随机生成一张卡片。然而,这仅适用于一种选择。如果我选择点击一次,我不会再选择它。我该如何纠正?
答案 0 :(得分:0)
choice=raw_input("Would you like to hit or stay? ")
while choice=="hit":
hit()
totalsum = hitsum + usersum
print "Your total is", totalsum
choice=raw_input("Would you like to hit or stay? ")
我强烈建议您更改hit
和hitsum
的处理方式。而不是让它全球化,为什么不回归呢?所以在hit
结束时,你会有
return hitsum
然后在电话中你可以做
totalsum = usersum + hit()
我也在这里看到其他几个问题。下一次通过choice==hit
循环,用户将返回到以前的状态。我不认为这就是你想要的。当然,您希望usersum
增加hitsum
。在这种情况下,请将totalsum = ...
替换为
usersum += hit()
最后,在您的hit
函数中,为什么要在开头定义hitsum=0
?