Случайно выбрал действие (определение) с random.choice () - PullRequest
0 голосов
/ 09 января 2019

Код не работает так, как должен. Это просто маленькая вещь, которую я хотел бы выучить как новый кодер:

import turtle
import random
me=turtle.Turtle()
def up_right(): 
   me.right(90)
   me.forward(100)

def down_right():
me.right(90)
me.forward(100)
choose = (up_right(), down_right)
random.choice(chose)

Он должен выбрать один и сделать это, но он выбирает их обоих. Я пробовал random.sample и random.choice, но не могу заставить их работать.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Я вижу три проблемы с вашим кодом. Первые два человека уже указали, опечатка choose против chose и оставление parens () на upright при ссылке на него как функция (up_right(), down_right).

Третье - то, что up_right и down_right оба реализуют одно и то же движение, поэтому даже если бы остальная часть вашего кода работала, вы бы не увидели никакой разницы! Ниже приведена перезапись, исправляющая эту проблему:

from turtle import Screen, Turtle
from random import choice

def up_right(turtle):
    turtle.setheading(90)
    turtle.forward(100)

def down_right(turtle):
    turtle.setheading(270)
    turtle.forward(100)

choices = [up_right, down_right]

screen = Screen()

me = Turtle('turtle')

choice(choices)(me)

screen.mainloop()

Запустите его несколько раз, и вы увидите, что иногда черепаха направляется вверх по экрану, иногда она опускается вниз.

0 голосов
/ 09 января 2019

Помимо опечатки choose ... Я предлагаю, чтобы после создания набора функций и выбора функции с помощью random.choice(), вы вызвали функцию, выбранную random.choice().

# Notice I removed the () after up_right so it doesn't make the function call on this line
choose = (up_right, down_right) 
# random.choice will return one of the two, and then the () will call whatever function was chosen
random.choice(choose)() 
...