2 回答
TA贡献1804条经验 获得超7个赞
虽然问题没有明确表达,但您似乎正在寻找存储函数并有条件地调用这些函数的方法。
好消息是,在 python 中,函数是第一类对象。
所以你可以做这样的事情 -
>>> handlers={
... 'valid':lambda human_age:human_age * 10.5,
... 'invalid': lambda human_age:((((human_age - 2) * 4) + 21))}
>>> handler_key = 'valid' if human_age <=2 else 'invalid'
>>> human_age=3 #In your case, take input here
>>> print(handlers[handler_key](human_age)) #call handler
25
为了进一步回应 OP 的评论,无论如何,lambda 在这里都不是必需的。以下是具有简单功能的相同代码 -
>>> def invalid_handler(human_age): return ((((human_age - 2) * 4) + 21))
...
>>> def valid_handler(human_age): return human_age * 10.5
...
>>> handlers = {
... 'valid': valid_handler,
... 'invalid': invalid_handler}
>>>
>>> print(handlers[handler_key](human_age))
25
>>> human_age=1
>>> print(handlers[handler_key](human_age))
17
我也会借此机会对 python 和几乎所有现代编程语言进行一次简短的咆哮——
在现代编程语言中,为什么有这么多方法可以做同样的事情?
Python Zen,没有。13、州——
应该有一种——最好只有一种——明显的方法来做到这一点。
然而,有多种方法可以达到相同的结果。我真的希望现代编程语言能够消除添加尽可能多的特性的诱惑,而是专注于更好地完成最重要的工作——速度、工具、更好的版本控制、框架。
我来自“C”背景,我相信它是迄今为止创造的最好的编程语言。
TA贡献1790条经验 获得超9个赞
我觉得用就够了
age = input("How old are you? ").val
print "That's " + age*7 + " in dog years."
添加回答
举报