Python将打印hello的while循环改为for循环并实现横排显示
问题解答
1 替换while循环为for循环简化代码
你原来的代码里用while循环手动维护i、j计数器的写法,完全可以用Python的for循环遍历可迭代对象的特性简化,不需要手动控制下标增减,修改后的单字符打印逻辑示例如下:
# 原while打印H的逻辑替换为for循环 for row in h: for col in row: print(pr_char if col == 1 else ' ', end='') print()
这样写法更简洁,也避免了计数器写错导致的死循环、下标越界问题。
2 调整为横向排列的HELLO输出
你当前代码输出纵向排列的原因是:把单个字符的5行全部打印完成后才打印下一个字符,要实现横向排列,需要按行拼接所有字符的对应行内容:所有字符都是5行高度,先打印H的第1行+空格+E的第1行+空格+L的第1行+空格+L的第1行+空格+O的第1行,再换行打印第二行,以此类推即可。
完整优化后代码
pr_char = input('请输入要显示的字符:') # 统一管理HELLO五个字符的点阵,每个字符为5行5列的矩阵 hello_dots = [ # H [[1,0,0,0,1], [1,0,0,0,1], [1,1,1,1,1], [1,0,0,0,1], [1,0,0,0,1]], # E [[1,1,1,1,1], [1,0,0,0,0], [1,1,1,1,1], [1,0,0,0,0], [1,1,1,1,1]], # L [[1,0,0,0,0], [1,0,0,0,0], [1,0,0,0,0], [1,0,0,0,0], [1,1,1,1,1]], # L [[1,0,0,0,0], [1,0,0,0,0], [1,0,0,0,0], [1,0,0,0,0], [1,1,1,1,1]], # O [[0,1,1,1,0], [1,0,0,0,1], [1,0,0,0,1], [1,0,0,0,1], [0,1,1,1,0]] ] # 遍历每一行(所有字符都是5行高) for line_num in range(5): # 遍历每个字符的点阵,取当前行的内容打印 for char_dot in hello_dots: current_line = char_dot[line_num] for dot in current_line: print(pr_char if dot == 1 else ' ', end='') # 每个字符之间加1个空格分隔,更美观 print(' ', end='') # 一行所有字符打印完成后换行 print()
运行效果示例
输入*后输出:
* * ***** * * * * * * * * * * * * ***** ***** * * * * * * * * * * * * * ***** ***** ***** * * *
内容的提问来源于stack exchange,提问作者Adam Smith
相关产品推荐
相关产品推荐

