2016-12-09 6 views
0

Я работаю над заданием для школы. Это просто, вовлекая файл Io и черепашьи графику, и у меня возникают проблемы, выяснить, почему последняя строка появляется отсоединен от остальных, как это: picture of outputПроблема с простой черепахой: чтение строк из файла, вывод на экран черепахи. Последняя строка выводится

import turtle 
def gfxFileIO(): 
    t1 = turtle.Turtle() 
    window = turtle.Screen() 
    f=open("file.txt","r") 
    count = 1 
    t1.penup() 
    t1.rt(270) 
    t1.fd(250) 
    t1.rt(270) 
    t1.fd(300) 
    t1.rt(270) 
    t1.write("Your file: ", font=("Arial", 16, "normal")) 
    t1.fd(45) 
    for line in f: 
     t1.write(str(count) + ". " + str(line), font=("Arial", 16, "normal")) 
     t1.fd(16) 
     count += 1 
window.exitonclick() 
+0

Есть ли в третьей строке вашего файла дополнительный разрыв строки? – DyZ

+0

Не похоже. Я тестировал его с другим файлом (больше строк), и он сделал то же самое – user3344624

+0

Вау, это проблема на самом деле. Я думаю, что случай, который я тестировал, имел ту же проблему по какой-то странной причине. Спасибо! – user3344624

ответ

0

Текстовый файл имел дополнительные разрывы строк. Спасибо пользователю DYZ

0

Как писал, этот код не запускается. window является локальной переменной gfxFileIO(), но используется в глобальном масштабе. Одна функция, gfxFileIO() никогда не вызывается. Теперь, когда проблема ввода данных была решена, давайте рассмотрим пример кода:

from turtle import Turtle, Screen 

FONT_SIZE = 16 
FONT = ("Arial", FONT_SIZE, "normal") 

def gfxFileIO(turtle, file_name): 
    file = open(file_name) 

    turtle.penup() 
    turtle.rt(270) 
    turtle.fd(250) 
    turtle.rt(270) 
    turtle.fd(300) 
    turtle.rt(270) 
    turtle.write("Your file: ", font=FONT) 
    turtle.fd(FONT_SIZE * 3) # double space 

    count = 1 

    for line in file: 
     turtle.write("{}. {}".format(count, line), font=FONT) 
     turtle.fd(FONT_SIZE) 
     count += 1 

yertle = Turtle() 

gfxFileIO(yertle, "file.txt") 

screen = Screen() 
screen.exitonclick()