Объявление переменной через ввод Zapier в Python

Я пытаюсь сделать простое объявление введенной переменной целым числом, но получаю сообщение об ошибке:

Баргл. Мы столкнулись с ошибкой при создании запуска python. :-( Ошибка: В вашем коде произошла ошибка! Трассировка (последний последний вызов): Файл "/tmp/tmpXq4aAP/usercode.py", строка 7, в the_function num = int(input['managers']) KeyError: ' число

Ниже приведен код, который я использую:

num = int(input['num'])

if num >= 100 :
  big_num = true
else:
  big_num = false

return {'big_num': big_num}

person csakon    schedule 03.03.2016    source источник


Ответы (5)


В Zapier код:

input['varname']

относится к переменной, которая передается в действии «Code by Zapier».

Ошибка, которую вы получаете, звучит для меня так, как будто вы не определили переменную num до своего кода.

Кроме того, True и False нужно писать с большой буквы.

В противном случае, см. ниже, эта установка работает...

введите здесь описание изображения

num = int(input['num'])

if num >= 100 :
  big_num = True
else:
  big_num = False

return {'big_num': big_num}
person gotmike    schedule 12.03.2016

Ваша ошибка прямо здесь:

num = int(input['num'])

Измените эти квадратные скобки на круглые скобки:

num = int(input('num'))

Если вы используете Python 2, вы должны использовать raw_input

num = int(raw_input('num'))
person idjaw    schedule 03.03.2016
comment
Новая ошибка: в вашем коде ошибка! Трассировка (последний последний вызов): файл /tmp/tmpMfNcV0/usercode.py, строка 7, в the_function num = int(input('num')) TypeError: объект 'dict' не вызывается - person csakon; 03.03.2016
comment
Какую версию Python вы используете и что именно вы вводите - person idjaw; 03.03.2016
comment
Согласно Zapier, среда — это vanilla Python 2.7.10. По сути, это преобразование кода данных на пути к другому приложению через исходное приложение. См. их страницу здесь - zapier.com/help/code-python. - person csakon; 03.03.2016
comment
@csakon Вы должны использовать raw_input, если вы используете Python 2. Я обновил свой ответ. - person idjaw; 03.03.2016
comment
Hye @idjaw, входная переменная в Zapier переопределяется словарем входных данных, отражающим значения из предыдущего шага. Этот ответ достаточно хорошо описывает stackoverflow.com/a/36001218/4188138 - person Shmuel Kamensky; 16.02.2018
comment
@SamKamensky Спасибо за внимание к этому. Мне придется вернуться к этому ответу в ближайшее время. Переопределение встроенных функций Python — ужасная идея! Я очень надеюсь, что они изменят (или изменили) это. - person idjaw; 17.02.2018
comment
С тех пор они добавили еще одну переменную с именем input_data, чтобы облегчить путаницу, но они по-прежнему переопределяют встроенную функцию ввода для обратной совместимости: P. Найдите входные данные на этой веб-странице zapier.com/help/code-python. - person Shmuel Kamensky; 18.02.2018

Многие из этих ответов ссылаются на встроенный input() - мы переопределяем это в Code by Zapier (поскольку буквально нет смысла вводить пользовательский ввод в автоматизированный скрипт). На его месте находится словарь, определенный некоторыми полями выше.

Определенно сбивает с толку людей, незнакомых с контекстом Zapier — мы рассмотрим возможность переименования и просто обнуляем сборку input.

person Bryan Helmig    schedule 15.03.2016

Ввод - это метод ядра, и он не может быть подписан, есть синтаксическая ошибка, измените код на такой.

num = int(input('num'))
person Srikanth    schedule 03.03.2016
comment
Новая ошибка: в вашем коде ошибка! Трассировка (последний последний вызов): файл /tmp/tmpMfNcV0/usercode.py, строка 7, в the_function num = int(input('num')) TypeError: объект 'dict' не вызывается - person csakon; 03.03.2016
comment
Какую версию питона вы используете? - person Srikanth; 04.03.2016

В Zapier правильный способ преобразования входных данных (каждый вход в шаг кода является строкой) в целые числа выглядит следующим образом:

num = int(input.get('num'))

or

num = int(input['num'])

Если к числу добавлено десятичное число, удалите ненужные символы из строки перед преобразованием в целое число. Для числа вроде 80.0 это будет выглядеть так:

num = int(input['num'][:-2])
person csakon    schedule 19.04.2017