因此,我正在尝试制作一个简单的小脚本,该脚本需要一个字符串,将其切成指定字符,然后用星号(*)替换单词的其余部分。下面的例子。
def multi_blank(strng, ch_count):
"""
>>> multi_blank("banana", 1)
'b*****'
"""
Run Code Online (Sandbox Code Playgroud)
当我尝试学习切片和索引编制时,总是会遇到麻烦。我设法切成指定的数字,但无法弄清楚如何用星号代替单词的其余部分。
return strng[:ch_count] + "*" + strng[ch_count:]
Run Code Online (Sandbox Code Playgroud)
以上是我尝试过的内容,但返回以下内容:
Expected:
'b*****'
Got:
'b*anana'
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
string = strng.replace(strng[ch_count:], '*')
return string
Run Code Online (Sandbox Code Playgroud)
简短的解释将对您的帮助有所帮助。赞赏!
现在,您只*在切片后的字符串后面添加a ,然后在其后添加其余字符串
In [22]: strng = 'banana'
In [24]: strng[:1] + "*" + strng[1:]
Out[24]: 'b*anana'
Run Code Online (Sandbox Code Playgroud)
因此,为了建立一个字符串的休息,可以乘以使用字符串重载乘法,*由(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*****'
Run Code Online (Sandbox Code Playgroud)
因此,更新后的代码将是
def multi_blank(strng, ch_count):
"""
>>> multi_blank("banana", 1)
'b*****'
"""
return strng[:ch_count] + "*" * (len(strng) - ch_count)
print(multi_blank("banana", 1))
Run Code Online (Sandbox Code Playgroud)
输出将是
b*****
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |