无法弄清楚为什么这段代码在输入 3 时运行完美,但在输入 5 时中断。{作业}

Can't figure out why this code runs perfect for input of 3 and breaks on 5. {homework}

当我在下面的代码中输入 3 时,它会完美地打印出我需要的形状。但是当输入大于 3 时,代码似乎会中断,如下图所示。我想我可能已经盯着这个看太久了,找不到明显的愚蠢错误。我对 python 有点陌生,所以请放轻松。

size = int(input("Size: "))

def middle1():
    count_middle1 = 0
    size_m1 = (size + 1)
    mid_1 = 1
    mid_2 = 1
    dots_a = 2
    bslsh = "\"
    fslsh = "/"    
    while (count_middle1 != size):
        print("|"+("."*dots_a)+((fslsh+bslsh)*mid_1)+("."*size_m1)+((fslsh+bslsh)*mid_2)+("."*dots_a)+"|")
        mid_1+=1
        mid_2+=1        
        count_middle1+=1
        dots_a-=1
        size_m1-=2
middle1()

Input == 3

Input == 5

如有任何帮助,我们将不胜感激!

如果我没理解错的话,你想要两棵并排的树。

|........./\................../\.........|
|......../\/\................/\/\........|
|......./\/\/\............../\/\/\.......|
|....../\/\/\/\............/\/\/\/\......|
|...../\/\/\/\/\........../\/\/\/\/\.....|
|..../\/\/\/\/\/\......../\/\/\/\/\/\....|
|.../\/\/\/\/\/\/\....../\/\/\/\/\/\/\...|
|../\/\/\/\/\/\/\/\..../\/\/\/\/\/\/\/\..|
|./\/\/\/\/\/\/\/\/\../\/\/\/\/\/\/\/\/\.|
|/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\|

有两个问题,我在评论中提到的一个是dots_a。第二个问题是你的size_m1。尝试考虑您需要将其更改为什么,以便它适用于任何 size.

我认为这对你有用。

def middle1(size):
    count_middle1 = 0
    size_m1 = (size * 2)
    mid_1 = 1
    mid_2 = 1
    dots_a = int(size_m1 / 2)
    bslsh = "\"
    fslsh = "/"    
    while (count_middle1 != size):
        print("|"+("."*dots_a)+((fslsh+bslsh)*mid_1)+("."*size_m1)+((fslsh+bslsh)*mid_2)+("."*dots_a)+"|")
        mid_1+=1
        mid_2+=1        
        count_middle1+=1
        dots_a-=1
        size_m1-=2
    print("\n")

这会给你输出

middle1(2)
middle1(3)
middle1(4)
middle1(5)
|../\..../\..|
|./\/\../\/\.|


|.../\....../\...|
|../\/\..../\/\..|
|./\/\/\../\/\/\.|


|..../\......../\....|
|.../\/\....../\/\...|
|../\/\/\..../\/\/\..|
|./\/\/\/\../\/\/\/\.|


|...../\........../\.....|
|..../\/\......../\/\....|
|.../\/\/\....../\/\/\...|
|../\/\/\/\..../\/\/\/\..|
|./\/\/\/\/\../\/\/\/\/\.|

这适用于任何输入

size = int(input("Size: "))

def middle1():
    count_middle1 = 0
    size_m1 = (size - 1)*2
    mid_1 = 2
    mid_2 = 2
    dots_a = size-1
    bslsh = "\"
    fslsh = "/"
    while (count_middle1 < size):
        print("|"+("."*(dots_a))+((fslsh+bslsh)*(mid_1-1))+("."*size_m1)+((fslsh+bslsh)*(mid_2-1))+("."*(dots_a))+"|")
        mid_1+=1
        mid_2+=1
        count_middle1+=1
        dots_a-=1
        size_m1-=2
middle1()