一点python帮助

一点python帮助,python,Python,我试着让它工作,但它只是冻结。 它应该显示一个金字塔,但它所做的只是。。停顿 from graphics import * valid_colours = ['red', 'blue', 'yellow', 'green'] colour = ['', '', ''] while True: colour[0] = raw_input("Enter your first colour: ") colour[1] = raw_input("Enter your second

我试着让它工作,但它只是冻结。 它应该显示一个金字塔,但它所做的只是。。停顿

from graphics import * 

valid_colours = ['red', 'blue', 'yellow', 'green']
colour = ['', '', '']

while True:
    colour[0] = raw_input("Enter your first colour: ")
    colour[1] = raw_input("Enter your second colour: ")
    colour[2] = raw_input("Enter your third colour: ")
    if ((colour[0] and colour[1] and colour[2]) in valid_colours):
        break 

while True:
    width = raw_input("Enter a width between 2-7: ")
    if width.isdigit(): 
        if (int(width) <= 7 and int(width) >= 2):
            break 

width = int(width)

win = GraphWin("My Mini Project ", 1000, 1000) # 1000 \ 20 = 50
win.setCoords(0 , 0 , 20, 20)
p1 = [0, 2]

while width > 0:
    p = [1, 3]
    loopWidth = 0
    while loopWidth < width:
        loopWidth = loopWidth + 1

        c = 0
        while c <= 10:
            c = c + 1
            if c % 2: 
                colour = "white"
            else:
                colour = "red"

            rectangle = Rectangle(Point(p[0],p1[0]), Point(p[1], p1[1]))
            rectangle.setFill(colour)
            rectangle.setOutline("black")
            rectangle.draw(win)

            p[0] = p[0] + 0.2
            p1[0] = p1[0] + 0.2

        p[0] = p[0] - 2
        p1[0] = p1[0] - 2

        p[0] = p[0] + 2
        p[1] = p[1] + 2

    width = width - 1
    p1[0] = p1[0] + 2
    p1[1] = p1[1] + 2
从图形导入*
有效颜色=[“红色”、“蓝色”、“黄色”、“绿色”]
颜色=['','','']
尽管如此:
颜色[0]=原始输入(“输入第一种颜色:”)
颜色[1]=原始输入(“输入第二种颜色:”)
颜色[2]=原始输入(“输入第三种颜色:”)
如果((颜色[0]和颜色[1]和颜色[2])为有效颜色:
打破
尽管如此:
宽度=原始输入(“输入介于2-7之间的宽度:”)
如果width.isdigit():
如果(int(width)=2):
打破
宽度=int(宽度)
win=GraphWin(“我的小项目”,10001000)#1000\20=50
win.setCoords(0,0,20,20)
p1=[0,2]
宽度>0时:
p=[1,3]
loopWidth=0
当loopWidth
  • 首先,颜色输入循环并不是你想要它做的
  • if((颜色[0]和颜色[1]和颜色[2])中的“and”(有效颜色):
    将它们的字符串值相互比较,其中任何非空字符串的计算结果均为True。表达式的计算结果为COLOR[2],假设它是最后一个非空字符串,您可以用:
    print(COLOR[0]和COLOR[1]以及COLOR[2])

    更改为:
    if(颜色[0]为有效颜色,颜色[1]为有效颜色,颜色[2]为有效颜色):

    • 您的主矩形绘图循环: 下面代码的目的是从1..width(包括)进行迭代
    :

    • 至于为什么它挂在金字塔坐标循环上,请使用print自己调试它:
      print'从(%d,%d)到(%d,%d)'(p[0],p1[0],p[1],p1[1])的绘图矩形

    您可能会发现将代码信息与函数draw_pyramid()分离,远离get_colors(),这对测试很有帮助。

    (1)应该将此发布到stackoverflow,(2)应该缩小问题范围,没有人愿意做您的工作:他们可能会有所帮助,但您需要付出一些努力哦,亲爱的,
    循环时的
    是什么?1:您是否尝试过在pdb或其他调试器中单步执行它?您是否尝试过通过打印语句进行调试?第二:我将向你们介绍我的一些朋友(特别是两位):for in循环(特别是围绕c的循环),以及+=和-=赋值运算符。它们很有帮助,而且不会咬人。
    
    barloopWidth = 0
    while loopWidth < width:
        loopWidth = loopWidth + 1
        do stuff using (loopWidth + 1)
    
    while width > 0:
        p = [1, 3]
    
        for loopWidth in range(1,width+1):
            for colour in ['white','red']*6:
    
                #Draw your rectangles
    
                p[0]  += 2
                p1[0] += 2
    
            p[0] -= 2
            p1[0] -= 2
    
            p[0] = p[0] + 2
            p[1] = p[1] + 2
    
        width = width - 1
        p1[0] += 2
        p1[1] += 2