You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中从字符串里删除部分内容?(倒星号金字塔场景)

解决Python倒金字塔打印问题&字符串截取技巧

嘿,我来帮你搞定这个倒金字塔的问题!你现在的代码里手动把astr3改成"*********"显然不是长久之计,循环起来根本没法自动处理,刚好你问的“怎么从字符串里删除部分内容”,这在Python里其实有很简单的方法,咱们一步步来:

核心问题:如何从字符串中删除部分内容

Python里的字符串是不可变的,没法直接修改原字符串,但我们可以通过生成新的子串来实现“删除”效果,最常用的就是切片操作:

  • 去掉字符串最后n个字符:用your_string[:-n],比如"abcde"[:-2]会得到"abc"
  • 去掉字符串开头n个字符:用your_string[n:],比如"abcde"[2:]会得到"cde"
  • 去掉中间某段:把前后部分拼接,比如"abcde"[:2] + "abcde"[4:]会得到"abe"(去掉了第3、4个字符)

针对你的场景,每次需要减少一个*,用astr3[:-1]就完美解决——它会取原字符串从开头到倒数第二个字符的所有内容,自动帮你删掉最后一个*。

修改后的倒金字塔代码

把你的代码调整一下,用切片代替手动修改字符串,就能实现自动生成倒金字塔了:

space = ""
astr3 = "**********"  # 初始10个星号
placeholder2 = 1
while placeholder2 <= 10:  # 调整循环次数,确保10个星号到1个星号都能打印
    print(space + astr3)
    space += " "
    astr3 = astr3[:-1]  # 每次自动去掉最后一个星号
    placeholder2 += 1

更简洁的写法(推荐)

其实不需要预先定义字符串,用Python的字符串乘法可以让代码更清爽:

total_rows = 10
for i in range(total_rows):
    # 前面的空格数随行数递增,星号数随行数递减
    print(" " * i + "*" * (total_rows - i))

这段代码直接循环10次,每次生成对应数量的空格和星号,逻辑更清晰,也更容易维护。

内容的提问来源于stack exchange,提问作者StormHawk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:26:56