Horizontal to Vertical Pattern实现问题:如何修正星号输出顺序
解决Horizontal to Vertical Pattern程序的星号顺序问题
原代码的问题
- 语法错误:
map(int,input(),split())存在两处错误:- 输入是字符串矩阵,无需转成
int,应使用str split()是input()的方法,正确写法为input().split()
- 输入是字符串矩阵,无需转成
- 遍历逻辑错误:原代码按「行→行内字符位置→列」的顺序遍历,且仅以当前行的最大字符串长度为基准生成星号,导致不同行的星号补全逻辑独立,不符合全局统一的垂直排版要求。
修正后的代码
n = int(input()) # 读取N×N字符串矩阵,确保每行取前n个元素 matrix = [list(map(str, input().split()))[:n] for _ in range(n)] # 计算整个矩阵中所有字符串的最大长度,作为输出的总行数 max_length = max(len(s) for row in matrix for s in row) # 遍历每个字符位置k(从0到max_length-1) for k in range(max_length): # 遍历每一行i for i in range(n): # 遍历该行的每个列j for j in range(n): try: # 输出第i行第j列字符串的第k个字符 print(matrix[i][j][k], end=' ') except IndexError: # 字符不存在时输出星号 print('*', end=' ') # 每一行的所有列输出完后换行 print()
代码说明
- 先获取全局最大字符串长度,确保所有垂直位置都按最长字符串的长度统一补全星号
- 遍历顺序改为「字符位置→行→列」,保证星号位置符合示例的垂直排版要求
- 修正了输入读取的语法错误,正确读取字符串矩阵
内容的提问来源于stack exchange,提问作者Srinivasan A
相关产品推荐
相关产品推荐

