Python 表达式的中间条件

Python 表达式的中间条件,python,python-2.7,Python,Python 2.7,我很好奇这样的事情是否可能: print "lajsdflk"+ (if x>1:"123123";else:"0000000") +"!@#" 不是专门打印,而是任何带有数字的功能;另一个例子: print 596* (if statementX: 6545; else: 9874) /63 如果可能的话,我想保持一行。你可以这样使用 >>> "lajsdflk" + ("123123" if 5 > 1 else "0000000") + "!@#" 'la

我很好奇这样的事情是否可能:

print "lajsdflk"+ (if x>1:"123123";else:"0000000") +"!@#"
不是专门打印,而是任何带有数字的功能;另一个例子:

print 596* (if statementX: 6545; else: 9874) /63
如果可能的话,我想保持一行。

你可以这样使用

>>> "lajsdflk" + ("123123" if 5 > 1 else "0000000") + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("123123" if 0 > 1 else "0000000") + "!@#"
'lajsdflk0000000!@#'
>>> "lajsdflk" + ("123123" if "abcd1234".isalnum() else "0000000") + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("0000000", "123123")[5 > 1] + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("0000000", "123123")[0 > 1] + "!@#"
'lajsdflk0000000!@#'
由于Python接受
if
表达式中的任何Truthy值,因此您甚至可以使用任何函数,如下所示

>>> "lajsdflk" + ("123123" if 5 > 1 else "0000000") + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("123123" if 0 > 1 else "0000000") + "!@#"
'lajsdflk0000000!@#'
>>> "lajsdflk" + ("123123" if "abcd1234".isalnum() else "0000000") + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("0000000", "123123")[5 > 1] + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("0000000", "123123")[0 > 1] + "!@#"
'lajsdflk0000000!@#'

人们还使用另一种伎俩。事情是这样的

>>> "lajsdflk" + ("123123" if 5 > 1 else "0000000") + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("123123" if 0 > 1 else "0000000") + "!@#"
'lajsdflk0000000!@#'
>>> "lajsdflk" + ("123123" if "abcd1234".isalnum() else "0000000") + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("0000000", "123123")[5 > 1] + "!@#"
'lajsdflk123123!@#'
>>> "lajsdflk" + ("0000000", "123123")[0 > 1] + "!@#"
'lajsdflk0000000!@#'
这里,用可能的结果准备一个元组,并根据比较操作的结果选择可能的值。在这里,
5>1
被求值并发现是真实的,因为Python的
True
等于1和
False
等于
0
5>1
求值为1

>>> 0 == False
True
>>> 1 == True
True
注意:这个技巧有一个问题。考虑这种情况,

>>> 1 + (2, 3/0)[4 > 0] + 5
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero

因为它只在分支被命中时才计算值。

我添加了excel标记,因为您的问题似乎更多的是关于excel而不是Python。语法如下:
print 596*(6545如果为True,则为9874)/63