求教 Python 交互式编程

2015-04-22 01:05:18 +08:00
 DaVinci42
比如说,已经定义了 print_a(), print_b(), print_c() 等函数,

功能是输出a, b, c。

需求:用户输入print_a,自动调用 print_a 函数,其他同理

现在的思路是,
如果输入内容==“print_a”,那么执行 print_a,其他同理,
都不符合,提示输入错误。

但现在需要大量的判断语句(判断输入是否为某某字符串)

希望实现:创建一个所有函数的列表,if 输入字符 in 函数列表,执行对应函数;else 提示输入错误。
遇到的问题是,用变量表示函数是否在列表中比较容易,但是如何用变量调用具体的函数。

能否提供思路,谢谢。


啊,其实我想用 Python 玩儿一下魔方,
所以需要定义一堆基本R, L, U, F 等函数,输入字母即可执行对应操作
2780 次点击
所在节点    Python
8 条回复
14
2015-04-22 01:12:48 +08:00
func_map = {
'print_a': print_a,
'print_b': print_a,
}

s = 'print_a'
func = func_map[s]
Sylv
2015-04-22 01:17:03 +08:00
gateswong
2015-04-22 01:17:48 +08:00
DaVinci42
2015-04-22 01:42:10 +08:00
@14 谢谢,没有想到用字典关联字符串与函数;
@Sylv 谢谢,是我英文 Google 还不够准确;
@gateswong 谢谢,if __name__ == '__main__' 这行确实非常有用!
twor2
2015-04-22 01:48:22 +08:00
```
input() uses raw_input to read a string of data, and then attempts to evaluate it as if it were a Python program, and then returns the value that results. So entering
```
wizardforcel
2015-04-22 08:19:31 +08:00
动态调用么。用eval吧

funcName ="print_a"
eval(funcName)()
JoeShu
2015-04-22 10:03:24 +08:00
应该安装1楼的方式,用字典代替switch语句,其他的输入直接执行和调用eval的都不要信,会有很严重的安全问题。
DaVinci42
2015-04-22 10:33:17 +08:00
@JoeShu 谢谢,了解了一下,eval 是有用户恶意使用的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/185367

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX