Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 December 04

NP

Nick Pershyn in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
источник

a

arnold in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Yaroslav Savin
попробуй eval(funcname_str + ())
В моем случае переменной  for (k), присваивается значение команды , в теле цикла правильно писать будет : eval(k+(x_constanta))
источник

YS

Yaroslav Savin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
arnold
В моем случае переменной  for (k), присваивается значение команды , в теле цикла правильно писать будет : eval(k+(x_constanta))
?
источник

NP

Nick Pershyn in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
В языке Haskell все достаточно прозрачно. Есть машинные типы вроде Float, которые имеют двоичное представление, но при выводе упрощаются. Соответственно при считвании из 10-тичной системы тоже имеют ограниченную точность. Однако есть рациональный тип, в котором рациональные числа представляются точно. Также есть и другие типы, которые можно например использоваться для чисел с неограниченной точностью.
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
arnold
Понял щас попробую спасибо
Юзай split
источник

a

arnold in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Vlad
Юзай split
Поидее я им и считал , проблема просто в том что я считал строками , а нужны функции , eval  поидее вариант но почему-то не затягивается
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Ты в текстовый файл что закинул?
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Координаты только?
источник

a

arnold in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Vlad
Ты в текстовый файл что закинул?
Команды , t.forward  и тд
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Ааа, я закидывал только координаты, и у меня они подтягивались списками и черепашка бегала по ним
источник

a

arnold in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Vlad
Ааа, я закидывал только координаты, и у меня они подтягивались списками и черепашка бегала по ним
Ну просто поидее в задании именно команды написано ( списки движений)
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Та я сомневаюсь, там задачи начального уровня, на этом уровне такое вряд-ли будет)
источник

V

Vlad in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
На самом деле какая разница как реализовывать, главное чтобы работало и чему-то научился)) Я долго ломал голову над ней, но все же осилил)
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
arnold
Здание чтобы команды считывались с txt файла , но когда с txt считываю то команда имеет type = str а не function
this in txt
t.forward, t.right, t.right, t.forward, t.forward
t.forward, t.left, t.forward, t.left, t.forward, t.right, t.right,t.right, t.forward, t.forward
t.left, t.forward, t.right, t.right, t.forward, t.left, t.forward
t.right, t.forward, t.forward, t.left, t.forward, t.left, t.forward,t.forward, t.left, t.forward
-------------------------------------

import turtle as t


def turtle_one():
   t.penup()
   t.forward(30)
   t.pendown()
   t.left(90+30)


def transition():
   if i == zero:
       t.penup()
       t.left(180)
       t.forward(100)
       t.pendown()
       t.left(270)
   else:
       t.left(180)
       t.penup()
       t.forward(120)
       t.right(90)
       t.forward(20)
       if i == seven:
           t.forward(40)
       t.left(270)
       t.pendown()


t.shape('turtle')
t.speed(4)
t.width(3)
t.color('blue')
x_constanta = 60

t.penup()
t.goto(-200, 0)
t.left(-90)
t.pendown()
line_number = 0

with open('turtle_list.txt', 'r') as file:
   for line in file:
       list_number = line.split(',')
       line_number += 1
       counter = 0
       x_constanta = 60
       if list_number == 1 :
           turtle_one()
       for k in list_number:
           print(type(k))
           if list_number == 2 and k == t.left or list_number == 3 and k == t.left:
               t.left(x_constanta / 2)
           if list_number == 3 and k == t.left and counter == 5 or\
                       list_number == 4 and k == t.right and counter == 0:
               k(-60)
           if list_number == 4 and k == t.left and counter == 3 or list_number == 4 and k == t.left:
               k(30)
           k(x_constanta)
           counter += 1
           transition()
надо составить словарь соответсвия текстовых строк и сущностей типа function,
move_map= { 't.forward': t.forward, 't.left': t.left, ... }
тогда можно оперировать:
move_program  =  ['t.forward', 't.right', 't.right', 't.forward', 't.forward' ]
for cmd_str in move_program:
 move_cmd = move_map[cmd_str]
 move_cmd(10)
источник

a

arnold in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
надо составить словарь соответсвия текстовых строк и сущностей типа function,
move_map= { 't.forward': t.forward, 't.left': t.left, ... }
тогда можно оперировать:
move_program  =  ['t.forward', 't.right', 't.right', 't.forward', 't.forward' ]
for cmd_str in move_program:
 move_cmd = move_map[cmd_str]
 move_cmd(10)
Тогда в этом случае как я понимаю я буду хранить в программе словари и тогда и смысл от переноса  в txt теряется так получается *?
источник

a

arnold in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Yaroslav Savin
а потом вызывать getattr(t, funcname_str)()
Тоже не получается ругается на то что у turtle нет таких аргументов
источник

YS

Yaroslav Savin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
arnold
Тоже не получается ругается на то что у turtle нет таких аргументов
код покажи
источник

YS

Yaroslav Savin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
в funcname_str скорее всего не то, что нужно
источник

a

arnold in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Yaroslav Savin
код покажи
with open('turtle_list.txt', 'r') as file:
   for line in file:
       list_number = line.split(',')
       line_number += 1
       counter = 0
       x_constanta = 60
       if list_number == 1:
           turtle_one()
       for k in list_number:
           print(k)
           if list_number == 2 and k == t.left or list_number == 3 and k == t.left:
               getattr(t, k)(x_constanta/2)
           if list_number == 3 and k == t.left and counter == 5 or\
                       list_number == 4 and k == t.right and counter == 0:
               getattr(t, k)(-60)
           if list_number == 4 and k == t.left and counter == 3 or list_number == 4 and k == t.left:
               getattr(t, k)(30)
           getattr(t, k)(x_constanta)
           counter += 1
           transition()
источник

YS

Yaroslav Savin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
смотри дебаггером что в строке
источник