Python 使用海龟图形导致错误的函数

Python 使用海龟图形导致错误的函数,python,function,error-handling,turtle-graphics,Python,Function,Error Handling,Turtle Graphics,我应该创建一个python代码来获取列表中的项目,并将它们转换为条形图。在我的代码中,我有一个creategraph方法,它在我第一次运行代码时起作用,但是当我选择在中输入不同的数据集时,它会导致错误,特别是在while循环中调用creategraph时 def creategraph(): bar = turtle.Turtle() bar.speed(100) bar.color("black") bar.fillcolor("green") bar.pensize(3) bar.setpo

我应该创建一个python代码来获取列表中的项目,并将它们转换为条形图。在我的代码中,我有一个creategraph方法,它在我第一次运行代码时起作用,但是当我选择在中输入不同的数据集时,它会导致错误,特别是在while循环中调用creategraph时

def creategraph():
bar = turtle.Turtle()
bar.speed(100)
bar.color("black")
bar.fillcolor("green")
bar.pensize(3)
bar.setposition(-200, 0)

xs = [top(text), eighties(text), seventies(text), sixties(text), belowsixties(text)]
#creates list withthe heights ^^

for i in xs:
    draw_bar(bar, i)
bar.penup()
bar.setposition(-200, -50)
bar.forward(40)
bar.write(str("90s"))
bar.forward(40)
bar.forward(40)
bar.write(str("80s"))
bar.forward(40)
bar.forward(40)
bar.write(str("70s"))
bar.forward(40)
bar.forward(40)
bar.write(str("60s"))
bar.forward(40)
bar.forward(40)
bar.write(str("<60"))
bar.forward(40)

bar.hideturtle()

turtle.done()
当codebreaker==0时: 断路器=假

text = input("Please enter the file name: ")
f = open(text)

lineList = [line.rstrip('\n') for line in f]

f.close()

text = lineList

print("Results for", text[0])
print("Number of scores:", findscores(text))
print("High score:", findmax(text))
print("Low score:", findmin(text))
print("Avg:", findavg(text))
print("Check other screen for graph of data")
print("Make sure to close out of graph before processing another file")
creategraph()
print("")
y_n = input("Process another file? y/n :")


if y_n == "y":
    breaker = False
elif y_n == "n":
    breaker = True

if breaker == True:
    codebreaker = 1

你知道creategraph函数有什么问题吗?

你的主要问题是,当你将控制权交给事件处理程序时,
turtle.done()
函数只能被调用一次,并且以后所有与代码的交互都将通过事件(鼠标点击、按键等)进行如果您多次调用
creategraph()
,则
turtle.done()
与从它调用无关

您的第二个问题是,您正在尝试将控制台输入与海龟事件相结合。你真的应该只使用海龟的事件模型。也就是说,您应该使用turtle的
textinput()
方法来根据事件弹出一个对话框,而不是
input()

codebreaker = 0
text = input("Please enter the file name: ")
f = open(text)

lineList = [line.rstrip('\n') for line in f]

f.close()

text = lineList

print("Results for", text[0])
print("Number of scores:", findscores(text))
print("High score:", findmax(text))
print("Low score:", findmin(text))
print("Avg:", findavg(text))
print("Check other screen for graph of data")
print("Make sure to close out of graph before processing another file")
creategraph()
print("")
y_n = input("Process another file? y/n :")


if y_n == "y":
    breaker = False
elif y_n == "n":
    breaker = True

if breaker == True:
    codebreaker = 1