所以我试着制作一个简单的小脚本,它接受一个字符串,切分到一个指定的字符,并用星号(*)替换单词的其余部分。下面的例子。
def multi_blank(strng, ch_count):
"""
>>> multi_blank("banana", 1)
'b*****'
"""
当我试图学习切片和索引时,我总是遇到麻烦。我设法切分到指定的数字,但我不知道如何用星星代替这个词的其余部分。
return strng[:ch_count] + "*" + strng[ch_count:]
上面是我尝试过的,但它返回了以下信息:
Expected:
'b*****'
Got:
'b*anana'
我也试过:
string = strng.replace(strng[ch_count:], '*')
return string
如果您能提供任何帮助,我们将不胜感激,并简要解释一下是如何做到的谢谢你!
最佳答案
现在,您只需在切片字符串后面附加一个*
,然后在它后面添加字符串的其余部分
In [22]: strng = 'banana'
In [24]: strng[:1] + "*" + strng[1:]
Out[24]: 'b*anana'
因此,为了创建字符串的其余部分,可以使用字符串的重载乘法,将
*
乘以(len(strng) - ch_count)
次(感谢@cs95的建议),并将其附加到切片字符串的末尾来自文档:https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations
参数必须是数字,或者一个参数必须是整数,另一个必须是序列在前一种情况下,数字被转换成一个公共类型,然后再相乘在一起。在后一种情况下,执行序列重复;负重复因子产生空序列。
In [27]: strng = 'banana'
In [28]: strng[:1] + "*" * (len(strng)-1)
Out[28]: 'b*****'
因此,更新后的代码将
def multi_blank(strng, ch_count):
"""
>>> multi_blank("banana", 1)
'b*****'
"""
return strng[:ch_count] + "*" * (len(strng) - ch_count)
print(multi_blank("banana", 1))
输出将是
b*****