如果Python没有三元条件运算符,是否可以使用其他语言结构模拟一个?
我需要在布尔变量设置为时才打印一些东西True.所以,看后这个,我试图用一个简单的例子:
>>> a = 100
>>> b = True
>>> print a if b
  File "<stdin>", line 1
    print a if b
             ^
SyntaxError: invalid syntax  
如果我写的话也一样print a if b==True.
我在这里错过了什么?
我正在关注Python教程,并且在某些时候他们讨论了函数的第一个语句如何是String Literal.就例子而言,这个String Literal似乎是用三个"s 来完成的,在这个例子中给出了
"""Print a Fibonacci series up to n."""
根据此文档,这将主要用于创建某种自动生成的文档.
所以我想知道这里是否有人可以向我解释这些字符串文字究竟是什么?
给定ints 的字典,我正在尝试使用每个数字格式化字符串,以及项目的复数形式.
样本输入dict:
data = {'tree': 1, 'bush': 2, 'flower': 3, 'cactus': 0}
样本输出str:
'My garden has 1 tree, 2 bushes, 3 flowers, and 0 cacti'
它需要使用任意格式的字符串.
我提出的最佳解决方案是PluralItem存储两个属性的类n(原始值),s('s'如果是复数''则为字符串,否则为空字符串).对不同的复数方法进行了分类
class PluralItem(object):
    def __init__(self, num):
        self.n = num
        self._get_s()
    def _get_s(self):
        self.s = '' if self.n == 1 else 's'
class PluralES(PluralItem):
    def _get_s(self):
        self.s = 's' if self.n == 1 else 'es'
class PluralI(PluralItem):
    def …'Hello ' + ('there' if name is None else name)
相当于
msg = 'Hello '
if name is None:
    msg += 'there'
else:
    msg += name
相当于这个:
msg = 'Hello '
if name is None:
    msg += 'there'
elif name == 'Mr Anderson'
    msg += 'Neo'
else:
    msg += name
编辑:这里的参考是我想缩小的代码
srepr = '\'Modify '
if self.register == 'p':
    srepr += 'Pointer'
elif self.register == 'v':
    srepr += 'Value'
else
    srepr += 'Unknown'
srepr += ' By ' + str(self.delta) …在Python> = 3.6中,f-strings可以用作方法的替代品str.format.举个简单的例子,它们是等价的:
'{} {}'.format(2+2, "hey")
f'{2+2} {"hey"}'
忽略格式说明符,我基本上可以str.format在f字符串中移动内部大括号的位置参数.请特别注意,我可以将str文字放在这里,虽然看起来有点笨拙.
但是有一些限制.具体来说,任何形状或形式的反斜杠都不允许在f字符串的大括号内:
'{}'.format("new\nline")  # legal
f'{"new\nline"}'          # illegal
f'{"\\"}'                 # illegal
\如果它在支架内,我甚至不能用它来分开一条长线;
f'{2+\
2}'     # illegal
即使\在正常情况下完全允许这种用法str;
'{\
}'.format(2+2)  # legal
在我看来,如果它\在f字符串的大括号内完全看到字符,则会将硬停止编码到解析器中.为什么要实施此限制?虽然文档指定了这种行为,但它并不能证明原因.
python ×6
if-statement ×2
python-3.x ×2
string ×2
backslash ×1
f-string ×1
inline ×1
literals ×1
operators ×1