如何使用不同的功能名称打印功能

Srinivas V:

我正在编写一个将用户输入打印为字母图案的函数。示例:如果用户输入为A,则输出应为A,由星号(*)制成

这是我的代码

def letter_a():
    for hz_line in range(4):
        for vert_line in range(4):
            if ((vert_line == 0 or vert_line == 3) and hz_line != 0) or ((hz_line == 0 or hz_line == 2)
                                                                         and (0 < vert_line < 3)):
                print("x", end="")
            else:
                print(end=" ")
        print()


def letter_n():
    for hz_line in range(4):
        for vert_line in range(5):
            if (vert_line == 0 or vert_line == 4) or (vert_line == hz_line):
                print("x", end="")
            else:
                print(end=" ")
        print()


def letter_u():
    for hz_line in range(4):
        for vert_line in range(4):
            if ((vert_line == 0 or vert_line == 3) and hz_line != 3) or (hz_line == 3
                                                                         and (vert_line == 1 or vert_line == 2)):
                print("x", end="")
            else:
                print(end = " ")
        print()


userinput = input()
inputlen = int(len(userinput))
print(inputlen)
for char in range(inputlen):
    print("letter_%s()" % userinput[char], end=" ")

如您所见,输出显示的是函数的名称,而不是函数的名称。如何才能做到这一点?

彼得·布恩(Peter Boone):

做您正在做的事情不是实现此目的的最佳方法。就像@jakub提到的那样,最好使用字典。

您甚至可以执行以下操作:


LETTERS = {
    "A": [
        " xx ",
        "x  x",
        "xxxx",
        "x  x"
    ],
    "N": [
        "x   x",
        "xx  x",
        "x x x",
        "x  xx"
    ]
}

def print_letter(letter):
    for line in letter:
        print(line)

userinput = input()

for char in userinput:
    if char.upper() in LETTERS:
        letter = LETTERS[char.upper()]
        print_letter(letter)

尝试根据它们的名称来调用方法有些不明智,除非您确实需要,否则我不建议您这样做。您必须确保收到的输入正确。如果输入的是a(0-+-==检查字典以查看您是否支持该字符会更容易(我在这if char.upper() in LETTERS行中做了)。

如果确实需要,可以执行以下操作:

userinput = input()

for char in userinput:
    # access the method
    letter_method = locals()["letter_" + char]
    #call the method
    letter_method()

locals()(和globals())返回字典,然后您可以根据范围来使用它们来访问变量。(请参阅https://docs.python.org/3/library/functions.html#locals)。这是相当的元编程,在此阶段我不会开始使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用不同功能输出功能?

如何在不同的选择上使用不同的功能

如何使用不同的参数反复运行功能

如何解决使用不同日期的重复功能?

如何使用不同的模板作为输入定义功能

如何使用不同的功能替换列表中的项目?

如何通过单击按钮使用不同的选择选项调用不同的功能

如何用不同的输入测试功能

防锈货物:启用特定功能后,如何对Dep使用不同的功能?

使用不同功能时DataTables中奇怪的类名称问题

jQuery:如何使用相同的点击功能触发不同的动作(使用不同的元素)

如何在Linux内核中使用功能指针打印功能名称?

如何在Django rest框架ViewSet中对不同的功能使用不同的身份验证

如何正确使用打印功能

在熊猫中对不同列使用不同功能的groupby

在不同的打印功能中使用%d

如何使用功能在jQuery中使用onload和onclick调用不同的ajax调用

如何在一个Keras层中使用不同的激活功能?

如何使用不同的用户角色多次运行相同的BDD功能

如何使用不同于按功能输入和排序列表的哨兵值?

如何让按钮在每次点击时调用不同的功能?

Angular5-如何调用不同组件的功能

Pandas DataFrame使用不同的功能作为行

使用不同端口的空手道功能

使用不同的输入多次运行功能并保存值

使自动终止证明使用不同大小的功能

cakephp使用不同的前缀来访问相同的功能

使用不同的登录名运行功能文件

如何使用python pandas打印相关功能?