Не реализована ошибка с функцией eval в python - PullRequest
0 голосов
/ 10 марта 2019

Я делаю что-то с черепашкой питона. Функция eval, показанная ниже, должна запускать h () или i (). Это единственные функции, которые работают прямо сейчас, поэтому единственное, что работает, это привет или ih или я или h. Консоль возвращает notimplementederror: eval еще не реализован. Я не понимаю, поскольку я вошел в совершенно новую вещь и поместил базовый код, например, eval ('1'), но это тоже не сработало. Спасибо, кстати, я новичок в python, поэтому я не силен в этом, так что, пожалуйста, помните, если я сделал глупые ошибки.

import turtle

from time import sleep
ninja = turtle.Turtle()
ninja.hideturtle()
coordinate1 = ninja.xcor()
coordinate2 = ninja.ycor()
new1=''
new2=''

ninja.speed(10)
def h():
  ninja.left(90)
  ninja.forward(50)
  ninja.back(100)
  ninja.forward(50)
  ninja.right(90)
  ninja.forward(35)
  ninja.left(90)
  ninja.forward(-50)
  ninja.forward(100)
  coordinate1 = ninja.xcor()
  coordinate2 = ninja.ycor()
  new1 = coordinate1+50

  ninja.penup()
  ninja.goto(new1,0)

def i():
  ninja.forward(20)
  ninja.pendown()

  ninja.left(90)

  ninja.st()
  ninja.right(90)
  ninja.stamp()

  ninja.ht()
  ninja.penup()
  ninja.back(20)
  ninja.pendown()
  ninja.back(50)



  coordinate1 = ninja.xcor()

  new1 = coordinate1+50

  ninja.penup()
  ninja.goto(new1,0)



h()
i()
name = input('What is your name. It will be drawn in the tab to the left lowercase only please.')
print('The name will begin to draw in the tab to the left')
sleep(3)
ninja.clear()
ninja.goto(0,0)

name =  list(name)
print(name)
length = len(name)
x=0
while (x < length-1):         
  print(name[x])
  x = x + 1

  new2=name[x]+'()'
  print(new2)
  eval(new2)

1 Ответ

1 голос
/ 10 марта 2019

Вам не нужно и не нужно eval() для реализации этой программы - вы можете сделать это с помощью словаря, который отображает символы в функции.Ниже приведена упрощенная переделка вашего кода, в которой вместо eval():

import turtle

def h():
    ninja.pendown()
    ninja.left(90)
    ninja.forward(100)
    ninja.backward(50)
    ninja.right(90)
    ninja.forward(40)
    ninja.left(90)
    ninja.forward(50)
    ninja.backward(100)
    ninja.right(90)

    ninja.penup()
    ninja.forward(25)

def i():
    ninja.forward(20)
    ninja.left(90)
    ninja.forward(70)
    ninja.right(90)
    ninja.pendown()
    ninja.circle(5)

    ninja.penup()
    ninja.left(90)
    ninja.backward(20)
    ninja.pendown()
    ninja.backward(50)
    ninja.right(90)

    ninja.penup()
    ninja.forward(45)

letters_to_code = {"h": h, "i": i}

name = input('What is your name? Lowercase only please: ')

ninja = turtle.Turtle()
ninja.penup()

for letter in name:
    if letter in letters_to_code:
        letters_to_code[letter]()

ninja.hideturtle()
turtle.done()

используется словарь. Некоторые вещи, о которых стоит подумать:

  • Иметь стандартную букву высота , ширина и интервал расстояние и определите их как переменные, которые вы можете использовать при возвышении ваших букв.

  • У каждого естьПисьмо оставить черепаху в ее первоначальной исходной ориентации, когда она заканчивается, в пользу следующей буквы.Это позволит вам комбинировать буквы в любом порядке без сюрпризов.

...