本帖最后由 阿奇_o 于 2022-6-4 10:01 编辑 
嗯,思路我想通常至少有两点吧:  
  1. 因为字符串是"不可变的"数据类型,所以字符串通常要结合列表来方便操作(如转为列表,或用另一个列表来做临时存储或中间变量) 
  2. m行n列,或N行N列,这些矩阵,基本上都要遍历,所以通常 就是两个for循环进行遍历。 
      其次,就是具体看题目怎么要求,注意 观察下标和元素的变化规律,以及下标之间的关系;注意+1还是-1 ;注意边界(走到最后下标是否越界) 
      比如,这里的"对角线",其实就是每行的"列号/下标"有着这样的固定关系: row[ i ] = row[len(s)-1-i] = '*'   (你直接试算一下就知道了,第一行是0,4,第二行是1,3,。。)
所以,
- def func(s):
 -     for i in range(len(s)):  # 作为行号,也作为 字符串的下标
 -         for j in range(len(s)):  # 作为列号
 -             row = [s[i],] * len(s)   # 先全部设为
 -             row[i] = row[len(s)-i-1] = '*'   # 再修改(隐去)指定位置的字符
 -         print(''.join(row))
 
-         
 - func(s='12Aab')
 - *111*
 - 2*2*2
 - AA*AA
 - a*a*a
 - *bbb*
 
- ---------------
 - #复盘: 这里嵌套的for j in ... 其实是多余的(会在相同位置上"修改"),所以 最终应该是:
 - def f(s):
 -     for i in range(len(s)):
 -         row = [s[i],] * len(s)
 -         row[i] = row[len(s)-1-i] = '*'
 -         print(''.join(row))
 
-         
 
 复制代码