You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:06:02