在python中,如何将一个由多个语句组成的条件转换成一个类似三元运算符的速记行?

2024-04-27 03:08:29 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将此代码转换为一行速记代码?有可能吗?在

我希望代码的目的相同,但要尽可能少的行

 inpt = input('Age: ')
    age = int(inpt)


if age <= 10:
    print('Kid')
elif age > 10 <= 20:
    print('Teen')    
elif age > 20:
    print('Adult')

Tags: 代码目的inputageifintkidprint
3条回答

可以将其缩短为:

age = int(input('Age: '))

print('Kid' if age <= 10 else 'Teen' if age <= 20 else 'Adult')

这就是说,除非您只是为了好玩而做一行程序,否则我会坚持使用您的原始代码,在修复了Teen的测试并将Adult变成一个简单的else(无需重新测试> 20,因为前面的例子排除了其他可能性)。

这可能不是建议的,但是您可以使用short circuiting来尝试一些东西。我个人认为这是更具可读性(不是你的例子),但代价是额外的比较。

input = input('Age: ')
age = int(input)


age <= 10 and print('Kid')

age > 10 and age <= 20 and print('Teen')

age > 20 and print('Adult')

让我们试试:

text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult'

示例:

^{pr2}$

输出:

kid
teen
adult

相关问题 更多 >