使用 Python 顺时针和逆时针旋转阵列 ASCII 艺术

rotate clockwise and counterclockwise array ascii art with python

提问人:mendozaic 提问时间:11/1/2023 最后编辑:mendozaic 更新时间:11/6/2023 访问量:86

问:

我有一个 ASCII 艺术图纸列表,我想顺时针和逆时针旋转 90 度而不会丢失图形。我正在使用 Python。

这是我拥有的 ASCII 艺术数组列表:

ascii_art_list = [[
                "         /\\_/\\ ",
                "    ____/ o o \\",
                "  /~____  =ø= /",
                " (______)__m_m)"
            ],
            [
                "      _........_",
                "   .d888888888888b.",
                "  d888+\"\"\"\"\"\"+888888.",
                "   8b' o  o  `88888b",
                " _.8P (_)    .888888",
                "d88P .____, .d88888P",
                "888b.       :88888P'",
                "`\"\"\"\"\"`-----`\"\"\"\"' mh"
            ],
            [
                "                   ,--,",
                "                 ,'   :.------.",
                "             ,--;,--=  \\       `.",
                "     ,------;--' -~~\"\"--'        `.",
                "   ,'     ,'                       \\",
                "  /     /'     _,,--'<              \\",
                " +----'-'    ,'       \\              :",
                "   ,'       /      _-' ._            |                      _",
                "  /        :   ,' ..     `--.        |_                    |\"",
                " ;          `-,   ''      / `.       ; )   __             O",
                " |           /        ,--'   |      /  '--~,'|",
                " |          .\\    ,-'       /    ,\\  ;._' ,'        .-.",
                " |          |  `--'        ,+----'   \\/   `'_,'        | |",
                " :     _    |            ,'  `.       \\,,.-'          O O",
                "  \\   ( '-+. `-.._,..--'|\\,___\\`-.     \\                 .",
                "  _`---'  | `----\\    ;|o\\      `.__-'                 |",
                " ((~,/  ~ |       / `--' |o \\   ,,'   `.                 |",
                "  \\\\ ' _,-|      /       '--' ,'       |`.      .--------+-.",
                "   '\"~~   |  _,-',---..__,.,=' \\       /  `-.   | [+++]ooO |",
                "          '\"\" | /      //ooo `-\\.     /....'    |          |",
                "   -hrr-  _.-'/ \\     /|,8888.  \\\\  ,'.....'    | (#)  (#) |",
                "        ---___   `-._/ |`8888P   |_'  .-'''     `----------'",
                "              `````` '-..,___,.,`' .-'                 _"
            ],
              [
                "()___()",
                "< @ @ >",
                " |   | ",
                " {o_o} ",
                "  (|)  "
            ],
              [
                "                   ;;",
                "                 ,;;'\\",
                "      __       ,;;' ' \\",
                "    /'  '\\~~'~' \\ /'\\.)",
                " ,;(      )    /  |",
                ",;' \\    /-.,,(   )",
                "     ) /       ) /",
                "    //         ||",
                "   (_\\         (_\\"
            ],
               [
                "        _",
                "        / \\      _-'",
                "      _/|  \\-''- _ /",
                " __-' { |          \\",
                "     /              \\",
                "     /       \"o.  |o }",
                "     |            \\ ;",
                "                   ',",
                "        \\_         __\\",
                "          ''-_    \\.//",
                "            / '-____'",
                "           /",
                "         _'",
                "       _-'"
            ]
            ]

预期的结果是

预期出局

我正在实现这个功能。

def rotar_90_grados_horario():
if not ascii_art_list:
    print("No hay ningún ASCII Art cargado.")
    return

choice = int(input("Elija un número de ASCII Art para rotar: ")) - 1

if 0 <= choice < len(ascii_art_list):
    for row in ascii_art_list[choice]:
        # lenrow = len(row)
        
        lenrow = len(row[0])
        if len(row[0]) < len(row):
            lenrow = len(row)
    # print(f"lenrow, {len(row)}")
    fila = len(ascii_art_list[choice])
    columna = lenrow
    rotated_art = []
    
    for i in range(len(ascii_art_list[choice][0])):
        row = []
        for j in range(len(ascii_art_list[choice])-1, -1, -1):
            row.append(ascii_art_list[choice][j][i])
        rotated_art.append(row)

    print("\nASCII Art rotado 90 grados en sentido horario:")
    for row in rotated_art:
        print("".join(row))
else:
    print("Selección no válida.")

但第四个结果是

       <(
 {| )
(o @_
|_  _
)o @_
 }| (
   >)

和数字丢失了

python 多维数组 arraylist ascii

评论

0赞 starball 11/4/2023
显示预期输出
0赞 moken 11/7/2023
您没有旋转符号。也就是说,当您将带有左大括号“{”(\u007B)的“图像”顺时针旋转 90 度时,您要显示符号 (\uFE37)

答: 暂无答案