Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在Python中截断的n字符表示n-3?_Python_Truncate - Fatal编程技术网

为什么在Python中截断的n字符表示n-3?

为什么在Python中截断的n字符表示n-3?,python,truncate,Python,Truncate,编辑:我甚至没有想到“…”是n的一部分。对不起,伙计们!(谢谢你) 我不确定“问题”是否遗漏了什么,或者我是否遗漏了什么。我应该用python编写一个函数,返回短语的截断-at-n-chars版本。文档字符串如下所示: """Return truncated-at-n-chars version of phrase. If the phrase is longer than n, make sure it ends with '...' and is no lon

编辑:我甚至没有想到“…”是n的一部分。对不起,伙计们!(谢谢你)

我不确定“问题”是否遗漏了什么,或者我是否遗漏了什么。我应该用python编写一个函数,返回短语的截断-at-n-chars版本。文档字符串如下所示:

"""Return truncated-at-n-chars version of phrase.

If the phrase is longer than n, make sure it ends with '...' and is no
longer than n.

    >>> truncate("Hello World", 6)
    'Hel...'

    >>> truncate("Problem solving is the best!", 10)
    'Problem...'

    >>> truncate("Yo", 100)
    'Yo'

The smallest legal value of n is 3; if less, return a message:

    >>> truncate('Cool', 1)
    'Truncation must be at least 3 characters.'

    >>> truncate("Woah", 4)
    'W...'

    >>> truncate("Woah", 3)
    '...'
"""
解决办法是:

if n < 3:
    return "Truncation must be at least 3 characters."

if n > len(phrase) + 2:
    return phrase

return phrase[:n - 3] + "..."
如果n<3:
return“截断必须至少为3个字符。”
如果n>len(短语)+2:
返回短语
返回短语[:n-3]+“…”

那为什么是n-3呢?是不是因为上面写着“n的最小法定值是3”?因为当我用谷歌搜索它时,可能少于3个。即使不是,为什么它不只是返回短语[:n]+“…”?

解决方案包含n-3的原因是,您必须确保在结尾处保留3个字符,以便添加“…”。例如,如果你有一个单词“大象”,你必须把它截成5个字符。输入看起来像这样

truncate("Elephant", 5)
'El...'
输出结果如下所示

truncate("Elephant", 5)
'El...'

正如你所看到的,我没有使用单词“大象”的前5个字符,而是只使用前2个字符,因为每个点(.)也算一个字符,所以我必须从n中减去3来计算每个点(.)。希望这能回答你的问题

这似乎是因为n字符包括三个点
。对于
truncate(“Hello World”,6)
n=6
表示来自Hello World的3个字符+3个点。这不是一个特定于Python的问题,这只是问题的要求。请尝试使用您提供的示例输入遍历您的代码。我要说的是,通过用点替换最后三个字符,将n个长度的字符串“截断”为n个字符,这有改进的余地。