Создание ответа под углом в `turtle.right ()` - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь сделать значение в turtle.right() ответом на response = raw_input("").Вот код:

print "Enter the number of degrees that you want .turtle to turn right"
choseDoor = False;
while choseDoor == False:
    response = raw_input("Some suggestions are 1300, 179, 260, 59, 6400, 9999999, 123456789, 192837465, 150, 10 = 31415926, 11 = 1919, 12 = 126789\n")
    if (response == "1") | (response == "one") | (response == "2") | (response == "two") | (response == "3") | (response == "three") | (response == "4") | (response == "four") | (response == "5") | (response == "five") | (response == "6") | (response == "six") | (response == "7") | (response == "seven") | (response == "8") | (response == "eight") | (response == "9") | (response == "nine") | (response == "10") | (response == "ten") | (response == "11") | (response == "eleven") | (response == "12") | (response == "twelve"):
        choseDoor = True
        print "this part of the script has been disabled. Please try again"
        choseDoor = False
    else:
        val = "response"
        import turtle
        turtle.shape("turtle")  
        turtle.color("brown") 
        turtle.speed(99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)   #experement with speed
        for i in range(9999999):
            turtle.forward( i +5)
            turtle.right(0 + "val")

            #this part only goes in a straight line so far.

Мое намерение состоит в том, чтобы сделать значение угла чертежа (turtle.right()) заданным ответом.Например, если мой ответ будет 36, будет запущен turtle.right(36).

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Углы черепахи равны float, поэтому я использовал это вместо int, как в решении @ depperm; 10 = 31415926, 11 = 1919, 12 = 126789 выглядело как предопределенные углы, поэтому я бросил их; Я добавил опцию «выход»; turtle.speed(99999...99999) не имеет смысла, работают только значения 0 - 10, поэтому я переключил его на альтернативный формат аргумента "fastest"; forward(9999999 + 5) казалось чрезмерным, поэтому я опустил его до 100; Я добавил некоторую логику, чтобы два разных угловых входа подряд рисовали концентрические объекты и поднимали перо между ними:

import turtle

predefined = {10: 31415926, 11: 1919, 12: 126789}

print("Enter the angle in degrees that you want the turtle to turn right")

while True:
    response = raw_input("Some suggestions are 1300, 179, 260, 59, 6400, 9999999, 123456789, 192837465, 150, 10 = 31415926, 11 = 1919, 12 = 126789\n")

    if response.lower() == 'exit':
        break
    elif response in predefined:
        angle = predefined[response]
    else:
        try:
            angle = float(response)
        except ValueError:
            print("this part of the script has been disabled. Please try again")
            continue

    turtle.shape('turtle')  # do this late so open turtle window after prompts
    turtle.speed('fastest')
    turtle.color('brown')
    turtle.home() # for drawings after initial one

    turtle.pendown()

    for i in range(100):
        turtle.forward(i + 5)
        turtle.right(angle)

    turtle.penup()
0 голосов
/ 22 мая 2019

Так что вам нужно привести response к int, а затем вы можете использовать val в выражении.Также вы можете убрать переключение choseDoor в if, поскольку оно возвращается к False.Поскольку вы используете приведение, я бы порекомендовал добавить новый логический canCast, чтобы увидеть, можно ли привести ответ в виде целого числа, тогда вы можете избавиться от длинного if выражения

print "Enter the number of degrees that you want .turtle to turn right"
choseDoor = False
canCast=True # new boolean
while choseDoor == False:
    response = raw_input("Enter the number of degrees that you want .turtle to turn right:")
    try:
        response=int(response)
    except:
        canCast=False #can't cast response must be a string
    if not canCast:
        print "this part of the script has been disabled. Please try again"
        canCast=True #reset the canCast flag
    else:
        val = int(response) # cast response to int
        import turtle
        turtle.shape("turtle")  
        turtle.color("brown") 
        turtle.speed(99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)   #experement with speed
        for i in range(9999999):
            turtle.forward( i +5)
            turtle.right(val)
...