2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
雖然問題沒有明確表達(dá),但您似乎正在尋找存儲(chǔ)函數(shù)并有條件地調(diào)用這些函數(shù)的方法。
好消息是,在 python 中,函數(shù)是第一類對(duì)象。
所以你可以做這樣的事情 -
>>> 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
為了進(jìn)一步回應(yīng) OP 的評(píng)論,無論如何,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
我也會(huì)借此機(jī)會(huì)對(duì) python 和幾乎所有現(xiàn)代編程語言進(jìn)行一次簡短的咆哮——
在現(xiàn)代編程語言中,為什么有這么多方法可以做同樣的事情?
Python Zen,沒有。13、州——
應(yīng)該有一種——最好只有一種——明顯的方法來做到這一點(diǎn)。
然而,有多種方法可以達(dá)到相同的結(jié)果。我真的希望現(xiàn)代編程語言能夠消除添加盡可能多的特性的誘惑,而是專注于更好地完成最重要的工作——速度、工具、更好的版本控制、框架。
我來自“C”背景,我相信它是迄今為止創(chuàng)造的最好的編程語言。

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
我覺得用就夠了
age = input("How old are you? ").val
print "That's " + age*7 + " in dog years."
添加回答
舉報(bào)