Python中If-Else语句中的模块?

Python中If-Else语句中的模块?,python,Python,我已经学习Python四周了,我喜欢它。我刚刚和我的实验室搭档完成了一项实验任务,然后我得到了一个随机的灵感,为我男朋友非常痴迷的游戏《战锤》创建了一个小Python程序 我创建了一个基本的程序,它运行得很好,但是对于高级程序,我遇到了一点麻烦 高级程序的功能: 您可以输入您的游戏将获得多少积分 逐节显示所有灰色骑士总部、部队等的列表(首先是所有总部,然后是精英等) 通过在名称旁边输入数字,可以逐节选择所需的单位 该程序在运行时为您提供每个部分的小计 该程序提供了最后合并的所有部分的总数 程序会

我已经学习Python四周了,我喜欢它。我刚刚和我的实验室搭档完成了一项实验任务,然后我得到了一个随机的灵感,为我男朋友非常痴迷的游戏《战锤》创建了一个小Python程序

我创建了一个基本的程序,它运行得很好,但是对于高级程序,我遇到了一点麻烦

高级程序的功能:

您可以输入您的游戏将获得多少积分

逐节显示所有灰色骑士总部、部队等的列表(首先是所有总部,然后是精英等)

通过在名称旁边输入数字,可以逐节选择所需的单位

该程序在运行时为您提供每个部分的小计

该程序提供了最后合并的所有部分的总数

程序会告诉您还有多少点要使用

对于灰骑士的总部之一,你可以选择最多5个型号,每个型号40分。在这个程序中,我想列出模型(使用print命令),然后使用if-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
回溯(最近一次呼叫最后一次):
文件“warhammer point calculator advanced.py”,第96行,在
main()
文件“warhammer point calculator advanced.py”,第13行,主目录
greyknowthq=inputHQ()
文件“warhammer point calculator advanced.py”,第48行,inputHQ
greyknowthq=greyknowthghostnighttotal
NameError:未定义全局名称“GreyKnightKnightTotal”
以下是我在文档顶部对这些功能的定义:


greyknowthq=inputHQ()

GreykNightGhostKnight总计=calcGreyKnightGhostKnight(greyKnightHQ)

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

您会遇到问题,因为您在函数内创建函数,然后试图在其范围外访问它:

def inputHQ():
    ...

    def calcGreyKnightGhostKnight():
        ...
inputHQ
是全局定义的,但是
calcgreyknowghtsknight
仅在
inputHQ
中定义。试图在
inputHQ
之外访问
CalcGreyknight GhostKnight
将产生
NameError


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

inputHQ应该包含选择你想要使用哪个HQ的所有元素。一旦选择了总部,它将被添加到项目结束时的总额以及总部选择部分结束时的小计中。如果我使用的模块不正确,请告诉我。就像我说的,我对Python只有四个星期的了解。不,还没有。虽然我非常熟悉CSS类,如果它们有什么相似之处的话。它们只是在名称上相似。这些Python类?我看不到您在函数中创建或导入模块,而是函数。可以在函数中定义函数,但我认为这里不需要这样做。尤其是因为你从来没打过电话。函数创建一个新的作用域(名称空间),GKT变量只存在于其中。因此,它不存在于外部功能中。但实际上,这是一个学习课程的好机会。好的,谢谢。我会调查课程。(: