在python中,如何将多个语句条件化为像三元运算符这样的简写行?

时间:2017-12-23 00:25:26

标签: python python-3.x

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

我希望代码具有相同的目的,但可能的行数最少

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


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

4 个答案:

答案 0 :(得分:2)

让我们试试:

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

示例:

age = 4
text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult'
print(text)
age = 12
text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult'
print(text)
age = 25
text = 'kid' if age <= 10 else 'teen' if age <= 20 else 'adult'
print(text)

输出:

kid
teen
adult

答案 1 :(得分:1)

可以将其缩短为:

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

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

那就是说,除非你为了好玩而做单行,否则在修复Teen的测试后,我会坚持你的原始代码,只是让Adult的情况变为普通{{} 1}}(无需重新测试else,因为之前的案例消除了其他可能性。)

答案 2 :(得分:0)

这可能不是建议的,但您可以使用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')

答案 3 :(得分:0)

怎么样:

age = int(input('Age: '))
print('Adult' if age > 20 else 'Kid' if age <= 10 else 'Teen')

在Python中你有一个三元运算符:

a if condition else b