为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信