Как убрать ссылку на число?
light_x, light_y, initial_tx, initial_ty= [int(i) for i in input().split()]
def movement(value_tor, value_light):
if value_tor > value_light:
if value_tor is initial_ty:
return 'S'
else:
return 'E'
if value_tor < value_light:
if value_tor is initial_ty:
return 'N'
else:
return 'W'
return ''
print(
movement(initial_ty, light_y) +
movement(initial_tx, light_x)
)
Тору надо добраться до молнии. Движения осуществляются только при принте севера,юга,запада,востока(N,S,W,E) и их совмещений(NE,NW,SE,SW) .В функций movement принимает значения либо по игрикам либо по иксам.сначала она проверяет значение тора больше либо меньше значения молнии.затем проверяет по какой асе Тор должен двигаться если value_tor было задано initial_ty то возвращать 'N' или 'S', в ином случаи там initial_tx=>'E''W' если ни одна из ретурнов не случилась=>Тор сравнялся по асе и надо вернуть' '.Проблема: когда initial_tx,initial_ty равны они считаются одним и тем жим объектом поэтому проверка value_tor is initial_ty всегда выдаёт True. И получается что Тор должен идти на SS (south-south)Вопрос:как сделать так чтобы значения были одинаковые но ссылки были разные.initial_tx==initial_ty True.initial_tx is initial_ty False.
Ответы (1 шт):
Как я понял конструкция if value_tor is initial_ty означает буквально: "первым параметром была переменная initial_ty". Это не работает, код внутри функции имеет доступ только к значениям параметров, но не к их именам. Чтобы код внутри функции что-то узнал про окружающий мир, это что-то должно быть передано как значение какого-то параметра.
Вот минимальная правка вашего кода:
initial_tx = input() # 0
initial_ty = input() # 0
def movement_y(value_tor, value_light):
if value_tor > value_light:
return 'S'
if value_tor < value_light:
return 'N'
return ''
def movement_x(value_tor, value_light):
if value_tor > value_light:
return 'E'
if value_tor < value_light:
return 'W'
return ''
print(movement_y(initial_ty, light_y) + movement_x(initial_tx, light_x))
Ещё один вариант:
initial_tx = input() # 0
initial_ty = input() # 0
def movement_y(value_tor, value_light, less, greater):
if value_tor > value_light:
return greater
if value_tor < value_light:
return less
return ''
print(movement(initial_ty, light_y, 'N', 'S') + movement(initial_tx, light_x, 'W', 'E'))
P.S. Сейчас initial_tx, initial_ty хранят строки '0', не числа 0. Это ошибка, которая позже вам доставит неприятности.