Python实现实心矩形打印:循环范围定义问题求助
解决实心矩形打印的循环范围问题
你的代码有三个关键问题,逐个修正就能实现需求:
1. 输入未转换为整数
input()函数返回的是字符串类型,直接传给range()会报错,必须先转成整数:
w = int(input("Enter the width of a frame: ")) h = int(input("Enter the height of a frame: "))
2. 循环嵌套顺序搞反
要打印高度为h、宽度为w的矩形,外层循环控制行数(高度h),内层循环控制每行的字符数(宽度w),原代码的循环顺序写反了,导致行和列颠倒。
3. 缺少换行逻辑
内层循环打印完一行的所有字符后,需要执行print()来换行,否则所有字符会挤在同一行。
修正后的完整代码
def print_box(w, h, m): """print filled box""" # 外层循环:打印h行(对应高度) for i in range(h): # 内层循环:每行打印w个填充字符(对应宽度) for j in range(w): print(m, end="") # 每行结束后换行 print() def main(): # 输入转整数 w = int(input("Enter the width of a frame: ")) h = int(input("Enter the height of a frame: ")) m = input("Enter a print mark: ") print() print_box(w, h, m) # 调用主函数 if __name__ == "__main__": main()
关键逻辑说明
- 外层
range(h):循环h次,每次代表打印一行 - 内层
range(w):每次循环打印w个填充字符,end=""让字符不自动换行 - 内层循环结束后的
print():手动换行,开启下一行的打印
内容的提问来源于stack exchange,提问作者emkay
相关产品推荐
相关产品推荐

