试图调用一个在Python中嵌入在其中间的变量的函数

试图调用一个在Python中嵌入在其中间的变量的函数,python,Python,我正在创建一个带有菜单的程序,该菜单要求用户通过raw\u input在程序中选择他们想要阅读的特定章节。该部分代码是: mainma = raw_input ("Which chapter do you want? (1-10): ") 这里是我的问题所在:我正在尝试对调用进行编码,以便它将转到所请求的章节,该章节定义为: Chap(mainma)menu() 当我假设如果mainma=1,它将调用存储特定章节数据的Chap1menu(),如果mainma=3它将调用Chap3menu()

我正在创建一个带有菜单的程序,该菜单要求用户通过
raw\u input
在程序中选择他们想要阅读的特定章节。该部分代码是:

mainma = raw_input ("Which chapter do you want? (1-10): ")
这里是我的问题所在:我正在尝试对调用进行编码,以便它将转到所请求的章节,该章节定义为:

Chap(mainma)menu()

当我假设如果
mainma=1
,它将调用存储特定章节数据的
Chap1menu()
,如果
mainma=3
它将调用
Chap3menu()
,这一假设是一样的。我遇到的语法错误与我不一致。我做错了什么?

您并不想尝试将用户输入直接转换为变量名;这是可能的,但它凌乱、脆弱、不安全。您要做的是创建一个列表或字典,将输入映射到章节函数;比如:

chapters = {'1': Chap1Menu,
            '2': Chap2Menu,
            #etc.
           }
然后像这样使用它:

chapters[mainma]()

在这里,您有机会进行高效的代码设计——可能章节菜单函数在它们之间共享很多行为。您不应该在这样的程序中复制和粘贴所有代码,因为这样更难阅读,而且更新也有风险(很容易使它们彼此不正常)

不管你在章节菜单中输入了什么,写一个更一般的函数,接受章节号作为参数。这有助于重用章节之间类似的代码。差异存储在一些列表或字典中(此处
内部
,最小值):


只需使用
m
作为功能
Chapmenu
的参数即可。例如:

def Chapmenu(m):
    if m == 1:
        # code for Chap1menu goes here
    elif m == 2:
        # code for Chap2menu goes here
    elif m == 3:
        # code for Chap3menu goes here
等等


然后打电话给Chapmenu(mainma)

我想这就是我想要看到的。谢谢。@Aaron,你真的为每一章的菜单做了如此不同的事情以至于它们是不同的功能吗?
def Chapmenu(m):
    if m == 1:
        # code for Chap1menu goes here
    elif m == 2:
        # code for Chap2menu goes here
    elif m == 3:
        # code for Chap3menu goes here