一道基础题 想不明白该咋做了
这种类型的题一直不会做,烦请会做这道题的大佬能顺便给我讲一下这类题的解题思路,多谢{:9_228:} 本帖最后由 阿奇_o 于 2022-6-4 10:01 编辑
嗯,思路我想通常至少有两点吧:
1. 因为字符串是"不可变的"数据类型,所以字符串通常要结合列表来方便操作(如转为列表,或用另一个列表来做临时存储或中间变量)
2. m行n列,或N行N列,这些矩阵,基本上都要遍历,所以通常 就是两个for循环进行遍历。
其次,就是具体看题目怎么要求,注意 观察下标和元素的变化规律,以及下标之间的关系;注意+1还是-1 ;注意边界(走到最后下标是否越界)
比如,这里的"对角线",其实就是每行的"列号/下标"有着这样的固定关系: row[ i ] = row = '*' (你直接试算一下就知道了,第一行是0,4,第二行是1,3,。。)
所以,
def func(s):
for i in range(len(s)):# 作为行号,也作为 字符串的下标
for j in range(len(s)):# 作为列号
row = ,] * len(s) # 先全部设为
row = row = '*' # 再修改(隐去)指定位置的字符
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 = ,] * len(s)
row = row = '*'
print(''.join(row))
一步一步来
#!/usr/bin/env python
#coding=utf-8
def replace(string, index, ch):
temp = list(string)
temp = ch
return ''.join(temp)
def output(s):
for i in s: print(i)
string = input()
length = len(string)
result = []
for i in range(0, length):
result.append(string * length)
#print(result)
# 左上角到右下角
for i in range(0, length):
result = replace(result, i, '*')
#print(result)
# 左下角到右上角
for i in range(0, length):
result = replace(result, length - i - 1, '*')
#print(result)
output(result)
本帖最后由 森亦简 于 2022-6-3 14:46 编辑
string = input("请输入字符串:")
lenth = len(string)
picture = []
picture_list=[]
picture_str=[]
m = ""
for i in range(lenth):
picture.append(string*lenth) ##先创建一个列表picture,里面的元素为:单个字符串*行数
picture_list.append(list(picture)) ##再创建一个列表picture_list,将单个字符串*行数转换成列表的形式作为picture_list的元素
picture_list = "*" ##用"*"替换左对角线的字符,替换后返回picture_list
picture_list = "*" ##用"*"替换右对角线的字符,替换后返回picture_list
for each in picture_list:
for i in range(lenth):
m = m + each ##将picture_list中的元素转化为连续的字符串
picture_str.append(m) ##将转换后连续的字符串存入picture_str
m = ""
for each in picture_str: ##打印picture_str中连续的字符串
print(each)
本帖最后由 allen-xy 于 2022-6-3 16:53 编辑
# 思路:
# 1、首先,字符串长度=输出行数。
# 2、其次,每行的第(行数)个和第(字符串长度-行数)个字符是特殊称号。
# 3、最后,每行的其他位置是字符串的第(行数)个字符。
# 4、最最后,利用列表将每行写入子列表中,再使用join方法输出。
def formated(s):
lens = len(s)
l = []
for i in range(lens): # 输出每一行。
l.append([])
ss = s # ss是每一行的主要字符
a = lens - i - 1 # a是每一行第i个字符的对称位置
for j in range(lens): # 输出每一行中的第j个字符。
if j == i or j == a: # 第i个和第lens-i-1个字符为特殊符号。
l.append('*')
else:
l.append(ss)
# print(l)
for i in range(len(l)):
print(''.join(l))
formated(s=input("请输入字符串:")) 感谢各位大佬的帮助,终于弄明白了{:10_281:}{:10_281:}{:10_281:}
页:
[1]