亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python中的三元布爾數學

Python中的三元布爾數學

嗶嗶one 2022-11-01 16:58:04
我寫了這個小腳本來計算狗年。前兩個狗年是人類的 10.5 年,之后的所有其他年份都是 4 年。human_age = int(input("Enter the human age to convert it to doggy years: "))    valid = (human_age <=2)    def convert_to_dog_years(human_age):        if valid:            dog_years = human_age * 10.5            print('Dog age is:', int(dog_years))        elif not valid:            dog_years = ((((human_age - 2) * 4) + 21))            print('Dog age is:', int(dog_years))    convert_to_dog_years(human_age)我在想更多的事情:我想指定數學運算,給它們兩個名稱,一個用于 0-2 的數字,另一個用于 2 及以上的數字。然后我想用一個布爾值來決定我想應用哪個數學過程。這在python中可能嗎?0-2    = dog_years = human_age * 10.5>=2    = dog_years = ((((human_age - 2) * 4) + 21))human_age = int(input("Enter the human age to convert it to doggy years: "))valid = (human_age <=2)def convert_to_dog_years(human_age):    if valid 0-2 else 2&up        print('Dog age is:', int(dog_years))convert_to_dog_years(human_age)
查看完整描述

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”背景,我相信它是迄今為止創造的最好的編程語言。


查看完整回答
反對 回復 2022-11-01
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

我覺得用就夠了


age = input("How old are you? ").val

print "That's " + age*7 + " in dog years."


查看完整回答
反對 回復 2022-11-01
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號