当前位置: 首页 > 知识库问答 >
问题:

编写21点游戏流时出现未解析的NameError

孟光耀
2023-03-14

我目前正在编写一个使用Python2.7的21点游戏。作为应用程序游戏流的一部分,我定义了一个名为player_turn()的新函数,在这个函数中,我需要一个用户输入,该输入会导致不同的场景(“hit”会给玩家另一张牌,“hold”会结束玩家的回合并将其传递给发牌人。否则会导致自定义错误)

def player_turn():
    if sum(player_card_numbers) < 21:
        user_decision = input('would you like to hit or hold?')
        if user_decision == 'hit':
            player_cards.append(deck.draw())
            print player_cards, dealer_cards
            player_turn()

        elif user_decision == 'hold':
            print "Dealer's turn!"
            dealer_turn()
        else:
            print "player must choose 'hit' or 'hold'"
            player_turn()

    elif sum(player_card_numbers) == 21:
        print "Blackjack!"
        dealer_turn()

    else:
        print "Player Burnt! \nDealer's turn!"
        dealer_turn()

值得一提的是,该代码最初是用python 3.7编写的,后来进行了更改。该代码在3.7中工作得很好。

现在我得到了这个错误:

NameError: name 'hit' is not defined

我希望得到一些关于如何解决这个问题的建议,以及为什么会发生这种情况的解释。:)

共有1个答案

诸彬郁
2023-03-14

问题就出在这一行:

user_decision = input('would you like to hit or hold?')

在Python2中,input()具有eval()的性质,因此它正在评估您的答案:hit

>>> user_decision = input('would you like to hit or hold?')
would you like to hit or hold?hit
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'hit' is not defined
>>> 

Python 2的编码标准是不使用input(),而是使用raw_input():

>>> user_decision = raw_input('would you like to hit or hold?')
would you like to hit or hold?hit
>>> user_decision
'hit'
>>> 

在Python 3中,input()函数等同于Python 2中的raw_input()

 类似资料:
  • 我正在尝试创建一个21点游戏,玩家以2张牌开始,然后询问他/她是否想要另一张牌(用户输入:是或否),如果是,则在总数中添加另一张牌。如果没有,游戏就会终止。 下面是我试图获得的示例输出: 这是我到目前为止的结果(可能是错误的位置): 提示和重新工作的源代码将得到高度赞赏。

  • 本文向大家介绍Java编写的24点纸牌游戏,包括了Java编写的24点纸牌游戏的使用技巧和注意事项,需要的朋友参考一下 任意4个1-13数字,加减乘除计算24点。 实现原理: 1)排列组合4个数字 2)计算每次排列组合的可能性 Cal24.java Combination.java 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我有一个黑杰克游戏,我需要制作,它被分离成两个文件,一个处理牌洗牌和另一个是关于实际的游戏 我的问题是,我可以得到代码,以打印两张牌的球员和经销商,虽然我需要打印的格式,如这样 玩家的手牌是3:1的球杆2的红心 不是这样的 ['1c','2h'] 显示总数并将卡片分开 这是管理游戏的第一个文件,另一个是纸牌 这是另一个文件,但任务说我不能修改它,我只是添加了它,使它更容易理解

  • 本文向大家介绍Javascript编写2048小游戏,包括了Javascript编写2048小游戏的使用技巧和注意事项,需要的朋友参考一下   去年2048很火, 本来我也没玩过, 同事说如果用JS写2048 只要100多行代码;   今天试了一下, 逻辑也不复杂, 主要是数据构造函数上的数据的各种操作, 然后通过重新渲染DOM实现界面的更新, 整体不复杂, JS,css,和HTML合起来就300

  • 本文向大家介绍Java编写掷骰子游戏,包括了Java编写掷骰子游戏的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接奔主题。 **多线程&&观察者模式 题目要求:《掷骰子》窗体小游戏,在该游戏中,玩家初始拥有1000的金钱,每次输入押大还是押小,以及下注金额,随机3个骰子的点数,如果3个骰子的总点数小于等于9,则开小,否则开大,然后判断玩家是否押对,如果未押对则扣除下注金额,如果押对则奖

  •  Hello,大家好,我是奈奈。 目前是快手游戏事业群的一名游戏文案策划。 首先,恭喜你,你的简历已经被面试官认可。 以下面经内容分为2个部分: 帮助你:摆正心态、明确目的、有效努力 第一部分:快手游戏的面试情况。 1.以单面为主,面试场次3-4面。 一面:直接主管 二面:合作同事+HR+HRBP 三面:主策划 可能还有项目制作人 一面,考察专业素质:岗位理解+综合能力+潜力 面试基本分为三步: