Python学习笔记-1-字符串插入字符

问题:
给定一个正整数 m (1<=m<5)和一个只包含数字的字符串 s (5<len(s)<=20) 使用 m 个 * 号插入到字符串中,且两个乘号不能相邻,插入后形成一个乘法算式。找出一种使乘法算式值最大的插入方式,并将结果输出。(乘号 * 不能放在字符串首尾位置)
案例:
m = 2, s = ‘123456’ 插入两个 * 号。插入的方式有:
123456=6912,123456=10488…
分析:
这道题目的关键是找出所有可插入 * 号的位置,生成不同的算式。观察题目可知,问题可转化为将 m 个元素放入 n 个盒子的问题,也就是组合问题。在Python内置库中有计算组合的函数:
from itertools import combinations
p = list(combinations(range(1,len(s)),m))
轻松得到所有可能的组合 p
p 中的每一个项目都是一种插入方式,每个项目中的元素就是字符串中插入 * 号的位置。
接下来就好办了:
首先将字符串转化为列表;
ls = list(s)
对 p 中的每一种元素进行遍历;
对列表 ls 中的每一个元素进行遍历;
如果列表 ls 中的某一个字符的索引与 p 中的元素值指示的插入点符合,在此插入 * 号。每次插入 * 号后 ls 中后边的元素相应后移,因此设置变量 k 修正插入点的变化。
for i in pos:
for j in range(len(s)):
if j == i:
ls.insert(j+k,c)
k += 1
一组插入方案完成后,将列表 ls 转回到字符串:
‘’.join(ls)
并添加到 rst 结果列表中;
在主程序中,根据 rst 结果列表生成字典 d ,d 的键是算式计算结果,值是对应的算式。
完整的程序代码如下:

# 字符串插入字符 Python 3.10.5
# by BosunOld 孙玉旭 2022、12、26
def insertChar(s,m,c):
    from itertools import combinations
    p = list(combinations(range(1,len(s)),m))
       
    def getStr(pos):
        ls = list(s)
        k = 0
        for i in pos:
            for j in range(len(s)):
                if j == i:
                    ls.insert(j+k,c)
                    k += 1
        
        return ''.join(ls)

    rst = []
    for i in p:
        sc = getStr(i)
        print(i,sc,eval(sc))
        rst.append(sc)
    return rst

if __name__ == '__main__':
    s = '6712345'
    m = 1
    if m <= len(s)-1:
        c = '*'
        d = {eval(i):i for i in insertChar(s,m,c)}
        print(max(d.keys()),d[max(d.keys())])
    else:
        print(f'输入错误:插入字符数 m = {m}, 大于字符串长度 {len(s)-1} !\n'
              f'm 必须小于等于 {len(s)-1} (字符串长度-1!) 并且大于等于 1。')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好,对于您的问题,可以使用Python字符串格式化来插入for变量,具体的做法如下: 假设要插入的变量是i,可以使用{}作为占位符,然后使用format方法将i传入,如下所示: ``` for i in range(10): s = "这是第{}个变量".format(i) print(s) ``` 这段代码会输出从0到9每个数字对应的字符串,其中{}会被对应的数字替换掉。 希望这个回答能够帮助到您。 ### 回答2: 在Python中,我们可以使用字符串的format()方法来插入for循环变量。 例如,假设我们有一个列表包含了一些名字,我们想要将这些名字插入到一个字符串中,可以使用for循环来完成。代码如下: ```python names = ['Alice', 'Bob', 'Charlie'] result = "我邀请了" for name in names: result += "{}、".format(name) result = result.rstrip("、") # 去掉最后一个逗号 result += "参加了我的派对。" print(result) ``` 运行这段代码,输出结果为:“我邀请了Alice、Bob、Charlie参加了我的派对。”。 在这段代码中,我们首先定义了一个名为names的列表,其中包含了三个名字。然后,我们定义了一个空字符串result,用于存储最后的结果。在for循环中,我们依次遍历names列表中的每个名字,使用format()方法将其插入字符串中。每次循环结束,我们都在result字符串后面插入一个逗号和一个空格。最后,我们使用rstrip()方法去掉result字符串末尾的逗号,并在字符串末尾添加自定义的句子,得到最终的结果。 总结来说,通过使用format()方法和for循环,我们可以在Python中将变量插入字符串中。 ### 回答3: 在Python中,可以使用字符串的format()方法来插入for循环变量。 format()方法中使用的占位符可以通过花括号{}来标识。可以在占位符中加上索引来指定要插入的变量。在使用for循环时,可以通过format()方法来动态地插入每个循环的变量。 下面是一个示例代码,使用for循环插入字符串变量: ```python names = ['Alice', 'Bob', 'Charlie'] greetings = [] for name in names: greeting = 'Hello, {}'.format(name) greetings.append(greeting) print(greetings) ``` 运行以上代码,将输出: ``` ['Hello, Alice', 'Hello, Bob', 'Hello, Charlie'] ``` 在代码中,定义了一个名为names的列表,包含了三个字符串元素。然后,创建了一个空列表greetings,用于存储每个循环中插入字符串。在for循环中,定义了一个变量name来迭代names列表中的每个元素。通过format()方法和占位符{},可以将变量name插入字符串'Hello, {}'中,并赋值给变量greeting。再将greeting添加到greetings列表中。最后,打印greetings列表,输出每次循环中插入了不同name变量的字符串。 总结起来,在Python中,可以使用字符串的format()方法,通过占位符{}来插入for循环变量,实现动态插入字符串的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值