不明白为什么这个代码在输入3的时候运行得很好,而在输入5的时候就中断了。{家庭作业}

2024-09-28 16:58:33 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在下面的代码中输入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

任何帮助都将不胜感激!你知道吗


Tags: 代码gtinputsizecount错误int形状
3条回答

我想这对你有用。你知道吗

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)
|../\..../\..|
|./\/\../\/\.|


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


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


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

如果我没听错的话,你想要两棵树挨在一起。你知道吗

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

有两个问题,一个是我在评论中提到的dots_a。第二个问题是你的size_m1。试着想想你需要把它改成什么,这样它就可以在任何size中工作。你知道吗

这将适用于任何输入

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()

相关问题 更多 >