相关疑难解决方法(0)

Python有三元条件运算符吗?

如果Python没有三元条件运算符,是否可以使用其他语言结构模拟一个?

python operators ternary-operator conditional-operator

5591
推荐指数
25
解决办法
180万
查看次数

如何编写内联if语句用于打印?

我需要在布尔变量设置为时才打印一些东西True.所以,看后这个,我试图用一个简单的例子:

>>> a = 100
>>> b = True
>>> print a if b
  File "<stdin>", line 1
    print a if b
             ^
SyntaxError: invalid syntax  
Run Code Online (Sandbox Code Playgroud)

如果我写的话也一样print a if b==True.

我在这里错过了什么?

python if-statement inline

342
推荐指数
12
解决办法
57万
查看次数

字符串文字,在函数定义中带有三引号

我正在关注Python教程,并且在某些时候他们讨论了函数的第一个语句如何是String Literal.就例子而言,这个String Literal似乎是用三个"s 来完成的,在这个例子中给出了

"""Print a Fibonacci series up to n."""
Run Code Online (Sandbox Code Playgroud)

根据此文档,这将主要用于创建某种自动生成的文档.

所以我想知道这里是否有人可以向我解释这些字符串文字究竟是什么?

python string literals

55
推荐指数
5
解决办法
7万
查看次数

多字符串格式

给定ints 的字典,我正在尝试使用每个数字格式化字符串,以及项目的复数形式.

样本输入dict:

data = {'tree': 1, 'bush': 2, 'flower': 3, 'cactus': 0}
Run Code Online (Sandbox Code Playgroud)

样本输出str:

'My garden has 1 tree, 2 bushes, 3 flowers, and 0 cacti'
Run Code Online (Sandbox Code Playgroud)

它需要使用任意格式的字符串.

我提出的最佳解决方案是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 …
Run Code Online (Sandbox Code Playgroud)

python string customization string-formatting

22
推荐指数
4
解决办法
2万
查看次数

Python inline elif可能吗?

'Hello ' + ('there' if name is None else name)
Run Code Online (Sandbox Code Playgroud)

相当于

msg = 'Hello '
if name is None:
    msg += 'there'
else:
    msg += name
Run Code Online (Sandbox Code Playgroud)

相当于这个:

msg = 'Hello '
if name is None:
    msg += 'there'
elif name == 'Mr Anderson'
    msg += 'Neo'
else:
    msg += name
Run Code Online (Sandbox Code Playgroud)

编辑:这里的参考是我想缩小的代码

srepr = '\'Modify '
if self.register == 'p':
    srepr += 'Pointer'
elif self.register == 'v':
    srepr += 'Value'
else
    srepr += 'Unknown'
srepr += ' By ' + str(self.delta) …
Run Code Online (Sandbox Code Playgroud)

python if-statement python-3.x

14
推荐指数
3
解决办法
9978
查看次数

为什么不能在f字符串中使用反斜杠?

在Python> = 3.6中,f-strings可以用作方法的替代品str.format.举个简单的例子,它们是等价的:

'{} {}'.format(2+2, "hey")
f'{2+2} {"hey"}'
Run Code Online (Sandbox Code Playgroud)

忽略格式说明符,我基本上可以str.format在f字符串中移动内部大括号的位置参数.请特别注意,我可以将str文字放在这里,虽然看起来有点笨拙.

但是有一些限制.具体来说,任何形状或形式的反斜杠都不允许在f字符串的大括号内:

'{}'.format("new\nline")  # legal
f'{"new\nline"}'          # illegal
f'{"\\"}'                 # illegal
Run Code Online (Sandbox Code Playgroud)

\如果它在支架内,我甚至不能用它来分开一条长线;

f'{2+\
2}'     # illegal
Run Code Online (Sandbox Code Playgroud)

即使\在正常情况下完全允许这种用法str;

'{\
}'.format(2+2)  # legal
Run Code Online (Sandbox Code Playgroud)

在我看来,如果它\在f字符串的大括号内完全看到字符,则会将硬停止编码到解析器中.为什么要实施此限制?虽然文档指定了这种行为,但它并不能证明原因.

python string-formatting backslash python-3.x f-string

3
推荐指数
3
解决办法
1255
查看次数