Имею аналогичную проблему:
Пишу программу - построитель графиков, естественно нужно реализовать ввод произвольной функции, зависящей от переменных X и Y, по которой потом будут производиться расчеты
from math import *
import sys
def main():
print "wwod"
f=raw_input()
print "Ok"
a=[]
y=1.0
for x in (3.0, 4.0):
a=(input(f+"\r"))
print a
main()
Этот код возвращает правильные значения, это хорошо видно если заменить a=(…) на a.append(…), но при каждом вызове input приходится минимум один раз жать срелку вправо и затем enter. Поясняю:
Вывод консоли:
1. C:\py\wwod_funkciy.py
2. wwod
3. x+y # это я набираю
4. Ok
5. x+y # это появляется само, если нажать сразу enter, вылезет ошибка. Жму “вправо”, enter
6. 3.0 # x=3.0, y=1, x+y=4.0 - правильно
7. x+y # это опять появляется само, действую аналогично
8. 4.0 # вновь правильно
Без “\r” в консоли в строках 5 и 7 курсор стоит не в начале, а в конце строки, но если нажать enter, вновь вылезет ошибка. Приходится сначала жать “вправо”, чтобы к “x+y” прибавился еще хотя бы “x”. “\n” только добавляет пустую строку, улучшений нет
Конструкция следующего вида работает нормально, но если в f=input() вписать значение, например f=input(x+y), вновь появляется аналогичная проблема. А без этого переделать для работы в цикле не получается
from math import *
import sys
x=1
y=2
def f(x,y):
return f
def main():
f=input()
print "Ok"
print f
main()
Вопрос: как сделать по-человечески?