python代码显示汉字

问题遇到的现象和发生背景

用python代码显示汉字

用代码块功能插入代码,请勿粘贴截图
import os
import struct
import time 

def GetHZOffset(HZ):
    GB=HZ.encode("gbk")
    #GBVal=struct.unpack("BB",GB)
    return ((GB[0]-0xa1)*94+GB[1]-0xa1)*32
    
def GetHZArray(In,HZ,HZArray):
    Offset=GetHZOffset(HZ)
    In.seek(Offset,0)
    HZInfo=In.read(32)
    HZValue=struct.unpack("32B",HZInfo)
    No=0
    HZArray.append([])

    for i in range(32):
        for j in range(8):
            if ((0x80>>j) & HZValue[i] ) == 0:
                HZArray[No].append(" ")
            else:
                HZArray[No].append("*")
        if i%2 == 1:
            No=No+1    
            HZArray.append([])
    
def Append(HZsArrayLine,HZArrayLine):
    HZsArrayLine.append(" ")
    for i in range(16):
        HZsArrayLine.append(HZArrayLine[i])
    
def Add2HZsArray(HZArray,HZsArray):
    for i in range(16):
        Append(HZsArray[i],HZArray[i])
    

def SetHZsArray(HZs,HZLib,HZsArray):
    In=open(HZLib,"rb")
    for HZ in HZs:
        HZArray=[]
        GetHZArray(In,HZ,HZArray)
        Add2HZsArray(HZArray,HZsArray)
    In.close()
    
def Display(HZsArray):
    i=0
    while(1):
        time.sleep(1)
        os.system("cls")

        for k in range(16):
            for j in range(i,len(HZsArray[0])):
                print(HZsArray[k][j],end="")    
            for j in range(0,i):
                print(HZsArray[k][j],end="")
            print("")

        if i ==  len(HZsArray[0]):
            i=0
        else:    
            i=i+1
            
def ShowHZs(HZs,HZLib):
    HZsArray=[]
    for i in range(16):
        HZ=[]
        HZsArray.append(HZ)
    SetHZsArray(HZs,HZLib,HZsArray)
    Display(HZsArray)

HZs="大家好"
HZLib="hzk.dat"    
ShowHZs(HZs,HZLib)
运行结果及报错内容

现在可以实现横向循环显示,无报错。

我的解答思路和尝试过的方法

修改循环方式也没有成功

我想要达到的结果

想问一下大家,怎么修改,才能让他整体汉字竖向循环显示?期待大家的回复。

import os
import struct
import time


def GetHZOffset(HZ):
    GB = HZ.encode("gbk")
    # GBVal=struct.unpack("BB",GB)
    return ((GB[0] - 0xa1) * 94 + GB[1] - 0xa1) * 32


def GetHZArray(In, HZ, HZArray):
    Offset = GetHZOffset(HZ)
    In.seek(Offset, 0)
    HZInfo = In.read(32)
    HZValue = struct.unpack("32B", HZInfo)
    No = 0
    HZArray.append([])

    for i in range(32):
        for j in range(8):
            if ((0x80 >> j) & HZValue[i]) == 0:
                HZArray[No].append(" ")
            else:
                HZArray[No].append("*")
        if i % 2 == 1:
            No = No + 1
            HZArray.append([])


def Append(HZsArrayLine, HZArrayLine):
    HZsArrayLine.append(" ")
    for i in range(16):
        HZsArrayLine.append(HZArrayLine[i])


def Add2HZsArray(HZArray, HZsArray):
    for i in range(16):
        Append(HZsArray[i], HZArray[i])


def SetHZsArray(HZs, HZLib, HZsArray):
    In = open(HZLib, "rb")
    for HZ in HZs:
        HZArray = []
        GetHZArray(In, HZ, HZArray)
        Add2HZsArray(HZArray, HZsArray)
    In.close()


def Display(HZsArray):
    i = 0
    while (1):
        time.sleep(1)
        os.system("cls")

        for k in range(16):
            for j in range(i, len(HZsArray[0])):
                print(HZsArray[k][j], end="\n")
            for j in range(0, i):
                print(HZsArray[k][j], end="\n")
            print("")

        if i == len(HZsArray[0]):
            i = 0
        else:
            i = i + 1


def ShowHZs(HZs, HZLib):
    HZsArray = []
    for i in range(16):
        HZ = []
        HZsArray.append(HZ)
    SetHZsArray(HZs, HZLib, HZsArray)
    Display(HZsArray)


HZs = "大家好"
HZLib = "hzk.dat"
ShowHZs(HZs, HZLib)