模块内部如果在Python中使用其他语句?

时间:2012-09-19 02:22:48

标签: python

我大约四周进入Python,我喜欢它。我刚刚与我的实验室合作伙伴完成了实验室任务,然后我得到了一个随机的灵感来为我的男朋友大量痴迷的游戏创建一个Python程序:Warhammer。

我创建了一个效果很好的基本程序,但对于高级程序我遇到了一些麻烦。

高级程序的作用:

您输入游戏的分数

逐段显示所有格雷骑士总部,部队等的列表(首先是所有总部,然后是精英等)。

通过输入名称旁边的数字

,您可以逐节选择所需的单位

该程序为您提供每个部分的小计。

该程序最后总结了所有部分。

该程序会告诉您剩余使用的点数。

对于Grey Knights的其中一个总部,您可以选择最多5个模型,每个模型40个点。在这个程序中,我想列出模型(使用print命令)然后如果elif语句对应每个数字。这是我的代码部分,我遇到了问题:

def inputHQ():

    print

    print

    print 'Select your HQ by entering the number beside their name. Example "1", "2", "3".'

    print 

    print '1. Lord Kaldor Draiog - 275 points'

    print '2. Grand Master Mordrak - 200 points'

    print '3. Ghost Knights - 40 points per model'

        greyKnightHQ = input('What HQ do you want? Use the number beside the modle, no periods: ')

            if greyKnightHQ == 1:

                greyKnightHQ = 275

            elif greyKnightHQ == 2:

                greyKnightHQ = 200

            elif greyKnightHQ == 3:

                greyKnightGhostKnight = input('How many Ghost Knights would you like? Up to 5: ')

                def calcGreyKnightGhostKnight():

                    greyKnightGhostKnightTotal = greyKnightGhostKnight * 40 

                greyKnightHQ = greyKnightGhostKnightTotal

                return greyKnightHQ

当我在Geany中运行时,我收到此错误:

Traceback (most recent call last):

        File "warhammer-point-calculator-advanced.py", line 96, in <module>

            main()

        File "warhammer-point-calculator-advanced.py", line 13, in main

            greyKnightHQ = inputHQ()

        File "warhammer-point-calculator-advanced.py", line 48, in inputHQ

           greyKnightHQ = greyKnightGhostKnightTotal

NameError: global name 'greyKnightGhostKnightTotal' is not defined

以下是我在文档顶部对这些功能的定义:

greyKnightHQ = inputHQ()

greyKnightGhostKnightTotal = calcGreyKnightGhostKnight(greyKnightHQ)

我的两个主要问题是: 1.你能在Python中的if else语句中定义一个模块吗?如果是这样,我做得对吗? 2.我是否还可以在if else语句之外创建calcGreyKnightGhostKnightTotal模块,并在需要时调用它,否则将其乘以0以便它不会弄乱程序的其余部分?

1 个答案:

答案 0 :(得分:2)

你遇到问题是因为你在一个函数中创建了一个函数,然后试图从它的作用域中访问它:

def inputHQ():
    ...

    def calcGreyKnightGhostKnight():
        ...

inputHQ是全局定义的,但calcGreyKnightGhostKnight仅在inputHQ内定义。尝试访问calcGreyKnightGhostKnight之外的inputHQ将产生NameError

我不确定inputHQ到底在做什么,所以我不能为你提供比这更多的帮助。