2013-09-05 2 views
0

Так что я делаю программу для рисования конкретных букв с использованием черепахи, и я настроил шкалу параметров, чтобы влиять на размер и толщину пера программы на основе подсказки для ввода. вот что я имею ... Я продолжаю получать ошибку, говоря, что масштаб не определен.Python Параметр не задан

import turtle 

def drawLetter(letter): 
    if letter == " ": 
     space(scale) 
    elif letter == "i": 
     i_lc(scale) 
    elif letter == "I": 
     i_uc(scale) 
    elif letter == "s": 
     s_lc(scale) 
    elif letter == "S": 
     s_uc(scale) 
    elif letter == "C": 
     c_uc(scale) 
    elif letter == "c": 
     c_lc(scale) 


def space(scale): 
    turtle.up() 
    turtle.forward(30 * scale) 


def questionMark(): 
    """ Draw a question mark. 
    """ 
    turtle.forward(10) 
    turtle.down() 
    turtle.left(90) 
    turtle.forward(2) 
    turtle.up() 
    turtle.forward(3) 
    turtle.down() 
    turtle.forward(5) 
    turtle.right(90) 
    turtle.forward(10) 
    turtle.left(90) 
    turtle.forward(10) 
    turtle.left(90) 
    turtle.forward(20) 
    turtle.left(90) 
    turtle.forward(5) 
    turtle.up() 
    turtle.forward(15) 
    turtle.left(90) 
    turtle.forward (30) 


def i_uc(scale): 
    """ Draw an upper case I. 
    """ 
    turtle.down() 
    turtle.forward(10) 
    turtle.left(90) 
    turtle.forward(20) 
    turtle.left(90) 
    turtle.forward(10) 
    turtle.left(180) 
    turtle.forward(20) 
    turtle.left(180) 
    turtle.forward(10) 
    turtle.left(90) 
    turtle.forward(20) 
    turtle.left(90) 
    turtle.forward(10) 
    turtle.up() 
    turtle.forward(10) 


def i_lc(scale): 
    """ Draw a lower case i. 
    """ 
    turtle.forward(10) 
    turtle.down() 
    turtle.left(90) 
    turtle.forward(11) 
    turtle.up() 
    turtle.forward(2) 
    turtle.down() 
    turtle.forward(2) 
    turtle.up() 
    turtle.right(180) 
    turtle.forward(15) 
    turtle.left(90) 
    turtle.forward(20) 


def s_uc(scale): 
    """ Draw an upper case S. 
    """ 
    turtle.left(90) 
    turtle.forward(20) 
    turtle.right(90) 
    turtle.forward(20) 
    turtle.right(180) 
    turtle.down() 
    turtle.forward(20) 
    turtle.left(90) 
    turtle.forward(10) 
    turtle.left(90) 
    turtle.forward(20) 
    turtle.right(90) 
    turtle.forward(10) 
    turtle.right(90) 
    turtle.forward(20) 
    turtle.left(180) 
    turtle.up() 
    turtle.forward(30) 


def s_lc(scale): 
    """ Draw a lower case s. 
    """ 
    turtle.down() 
    turtle.forward(20 * scale) 
    turtle.left(90) 
    turtle.forward(5 * scale) 
    turtle.left(90) 
    turtle.forward(20 * scale) 
    turtle.right(90) 
    turtle.forward(5 * scale) 
    turtle.right(90) 
    turtle.forward(20 * scale) 
    turtle.up() 
    turtle.right(90) 
    turtle.forward(10 * scale) 
    turtle.left(90) 
    turtle.forward(10 * scale) 


def c_uc(scale): 
    turtle.down() 
    turtle.forward(20 * scale) 
    turtle.forward(-20 * scale) 
    turtle.left(90) 
    turtle.forward(20 * scale) 
    turtle.right(90) 
    turtle.forward(20 * scale) 
    turtle.forward(-20 * scale) 
    turtle.left(90) 
    turtle.forward(-20 * scale) 
    turtle.up() 
    turtle.right(90) 
    turtle.forward(20 * scale) 


def c_lc(scale): 
    turtle.down() 
    turtle.forward(20 * scale) 
    turtle.forward(-20 * scale) 
    turtle.left(90) 
    turtle.forward(10 * scale) 
    turtle.right(90) 
    turtle.forward(20 * scale) 
    turtle.forward(-20 * scale) 
    turtle.left(90) 
    turtle.forward(-10 * scale) 
    turtle.up() 
    turtle.right(90) 
    turtle.forward(20 * scale) 


def main(): 
    scale == input("Enter scale:") 
    turtle.pensize(scale) 
+1

Сделать этот пост более читаемым, форматируя свой код правильно и ограничивая количество введенного кода (покажите только то, что необходимо для демонстрации и воспроизведения ошибки). Насколько я понимаю, вы называете 'c_lc (scale)' (например), но вы не определяете переменную, называемую «scale» в «верхней» программе, которая печатает буквы. Отсюда и ошибка. –

+0

Пожалуйста, сделайте * не * используйте вкладки для отступа. Вы должны использовать 4 пробела вместо вкладки. ** Любой редактор ** имеет возможность вставлять пробелы вместо вкладки при нажатии клавиши вкладки, поэтому никаких оправданий для этого. (О том, почему следует избегать вкладок: они выглядят по-разному в разных средах, поэтому даже если на вашем компьютере код выглядит правильно, в другом могут быть загромождены отступы. Также при копировании с веб-сайта у меня часто возникают проблемы с смешанным пространством и вкладками) – Bakuriu

ответ

1

В вашей main функции у вас есть код

scale == input("Enter scale:") 

но это сравнение и не присваивания, так что вы получите сообщение об ошибке, потому что scale не определен. Чтобы дать переменной scale значение (и таким образом определить его), вы должны использовать singe =.
Для решения использования:

scale = input("Enter scale:") 

Другое дело, что ваш drawLetter(letter) не будет иметь доступ к переменной scale, поэтому вы должны добавить его в качестве аргумента там.
Для решения использования:

def drawLetter(letter, scale): 

Третья проблема не в том, что функция drawLetter не вызывается!

Смежные вопросы