Python - 一行if-elif-else语句

oor*_*soy 6 python if-statement

我试图将if-elif-else语句压缩成一行.我试过了:

a == 1 ? print "one" : a == 2 ? print "two" : print "none"
Run Code Online (Sandbox Code Playgroud)

但是我遇到了语法错误.我也尝试过:

print "one" if a == 1 else print "two" if a == 2 else print "none"
Run Code Online (Sandbox Code Playgroud)

但我也遇到了语法错误.

我可以做些什么来更好地解决这些问题或创建一个有效的答案?

Jon*_*nts 15

尝试:

print {1: 'one', 2: 'two'}.get(a, 'none')
Run Code Online (Sandbox Code Playgroud)


che*_*ner 8

Python中的"三元"运算符是表单的表达式

X if Y else Z
Run Code Online (Sandbox Code Playgroud)

where XZ是值,Y是一个布尔表达式.请尝试以下方法:

print "one" if a==1 else "two" if a==2 else "none"
Run Code Online (Sandbox Code Playgroud)

这里,表达式"two" if a==2 else "none"的值是第一个返回的值,当a==1为false时.(它解析为"one" if a == 1 else ( "two" if a==2 else "none").)它返回的一个"one","two"或者"none",然后将其作为唯一的参数传递print声明.

  • @avaragecoder,您的代码被"print"语句污染,但不起作用.这按预期工作. (3认同)

Ale*_*kov 5

使用嵌套条件表达式(三元运算符):

>>> a = 2
>>> print 'one' if a == 1 else 'two' if a == 2 else 'none'
two
Run Code Online (Sandbox Code Playgroud)