将 Star Growth 与字符串中的字母一起使用
Using Star Growth with letters in a string
我有这个 activity,我必须在字符串中使用星号增长,它随着字符串中字符的数量而增长。这是一个例子:star_match_growth("incandescent", "c")
并将其 return 设置为:inc*andesc**ent 如果字符串中还有更多 c,则继续执行。这是我必须做到的:
def star_match_growth(word, letter):
builder = ""
for i in range(0, len(word)):
word_2 = word.replace(letter, str(star_growth(word.count(letter))))
return word_2
def star_growth(top):
word = top * "*"
builder = ""
for i in range(1, len(word) + 1):
builder += word[0:i] + " "
return builder[:-1]
print(star_match_growth("incandescent", "c"))
输出为:
inc* **andesc* **ent
注意它也必须忽略大写
请注意,我也不允许将任何内容导入代码 iteself
您可以为 re.sub
提供一个可调用对象(函数、lambda 等),它必须接受单个正则表达式匹配对象作为参数,并且必须 return 一个字符串替换那场比赛。在我的代码片段中,我利用了一个持久的默认参数 it
,这是一个产生递增整数的迭代器(在本例中从 1 开始)。迭代器的状态在调用之间保留,这具有将越来越多的星附加到后续匹配的效果:
def star_match_growth(string, pattern):
import re
from itertools import count
def replace(match, it=count(1)):
return match.group() + ("*" * next(it))
return re.sub(pattern, replace, string, flags=re.IGNORECASE)
print(star_match_growth("incandescent", "C"))
输出:
inc*andesc**ent
>>>
编辑 - 不利用标准库,而是使用生成字符(有时是星号字符串)的生成器:
def star_match_growth(string, letter):
num_stars = 1
for char in string:
yield char
if char in {letter.lower(), letter.upper()}:
yield "*" * num_stars
num_stars += 1
print("".join(star_match_growth("incandescent", "C")))
我有这个 activity,我必须在字符串中使用星号增长,它随着字符串中字符的数量而增长。这是一个例子:star_match_growth("incandescent", "c") 并将其 return 设置为:inc*andesc**ent 如果字符串中还有更多 c,则继续执行。这是我必须做到的:
def star_match_growth(word, letter):
builder = ""
for i in range(0, len(word)):
word_2 = word.replace(letter, str(star_growth(word.count(letter))))
return word_2
def star_growth(top):
word = top * "*"
builder = ""
for i in range(1, len(word) + 1):
builder += word[0:i] + " "
return builder[:-1]
print(star_match_growth("incandescent", "c"))
输出为:
inc* **andesc* **ent
注意它也必须忽略大写 请注意,我也不允许将任何内容导入代码 iteself
您可以为 re.sub
提供一个可调用对象(函数、lambda 等),它必须接受单个正则表达式匹配对象作为参数,并且必须 return 一个字符串替换那场比赛。在我的代码片段中,我利用了一个持久的默认参数 it
,这是一个产生递增整数的迭代器(在本例中从 1 开始)。迭代器的状态在调用之间保留,这具有将越来越多的星附加到后续匹配的效果:
def star_match_growth(string, pattern):
import re
from itertools import count
def replace(match, it=count(1)):
return match.group() + ("*" * next(it))
return re.sub(pattern, replace, string, flags=re.IGNORECASE)
print(star_match_growth("incandescent", "C"))
输出:
inc*andesc**ent
>>>
编辑 - 不利用标准库,而是使用生成字符(有时是星号字符串)的生成器:
def star_match_growth(string, letter):
num_stars = 1
for char in string:
yield char
if char in {letter.lower(), letter.upper()}:
yield "*" * num_stars
num_stars += 1
print("".join(star_match_growth("incandescent", "C")))