Python生成逐行递增星号图案,当前仅输出单行星号如何修正?
Python星号图案生成代码修改方案
原代码问题点
- 函数内仅循环拼接出了一个总长为
n+1的星号字符串,没有生成每行对应的内容,也没有包含要求的line x-前缀 - 仅返回单个字符串,自然只能在同一行输出所有星号
- 不符合单一功能要求的隐患:原逻辑如果把打印放在函数内就会违反规则,拆分后可以完全避免该问题
修改后代码
def generar_patron(n): # 函数仅负责生成对应格式的每行内容,返回列表,不涉及输入输出 lineas = [] for num_fila in range(1, n+1): contenido = f"line {num_fila}-{'*' * num_fila}" lineas.append(contenido) return lineas # 输入输出逻辑放在函数外部实现 cant = int(input("Ingrese la cantidad de filas: ")) resultado = generar_patron(cant) for linea in resultado: print(linea)
逻辑说明
- 函数接收行数参数
n后,循环遍历1到n的整数,每次生成对应行的内容存入列表,最终返回整个列表,完全符合单一功能要求 - 外部逻辑单独处理用户输入读取、函数调用、结果逐行打印,职责拆分清晰
- 用Python字符串乘法
'*' * num_fila直接生成对应数量的星号,比循环拼接更简洁高效
内容的提问来源于stack exchange,提问作者Gibbon
相关产品推荐
相关产品推荐

