Найти - Пользователи
Полная версия: ввод различных функций
Начало » Python для новичков » ввод различных функций
1 2
imonkey
print ('pram')

def pram(f ,a, b):
return (b-a) * f((a+b)/2)


while 1:
x = raw_input('x = ')
if x == 'stop':
print ('end')
break
elif x =='pram':
try:
f = string(raw_input('f = '))
a = int(raw_input('a = '))
b = int(raw_input('b = '))
except ValueError:
print ('vvedite 4islo')
break
result = pram(f, a, b)
print ('result = '+str(result))
break
Я ввожу pram, начинаеться выполняться функция pram, потом я ввожу f, a, b. Проблема в том, что f это не число, нужно ввести как функцию
 try:
f = string(raw_input('f = '))
a = int(raw_input('a = '))
b = int(raw_input('b = '))
что нужно написать чтобы все было нормально, и я мог в f вводить любые функции, например x, x**2
Slon
Во первых не плоди кучу тем. Если начал одну, там и задавай вопросы.

Во вторых, формулируй для себя путь к результату. Пример:
a = 2
b = 3
f = 'spam'

#(b-a) * f((a+b)/2)

result = (3-2)*'spam'((2+3)/2)
Вот объясни, что должен вернуть по твоему print(result)?
imonkey
я питон изучаю пару дней всего, но мне нужно срочно написать программу числовые интегрирования, если честно то я не знаю ответ на твой вопрос(. Я не уверен, но вроде у меня уже почти все готово, осталось только сделать так, чтобы вводить функцию, например x, x**2, sin, cos. Вот это я не знаю как сделать, если ты знаешь, то поправь код пожалуйста как надо правильно, мне очень надо
Slon
Если честно, я вот вообще не понимаю, что тебе надо получить на выходе.
imonkey
вот функция
def pram(f ,a, b):
return (b-a) * f((a+b)/2)
вот тут я ввожу параметры
f = string(raw_input('f = '))
a = int(raw_input('a = '))
b = int(raw_input('b = '))
a и b это числа, а f эта какая либо функция(x, x**2, sin) на выходе я должен получить результат формулы (b-a) * f((a+b)/2)
подскажите пожалуйста как это сделать, у меня не получаеться ввести f, но может есть и другие ошибки в коде, я не знаю(
Slon
Я тебя правильно понял, тебе надо что то типа этого:
(b-a) * f((a+b)/2)

a =2
b =3
f = x**2

(3-2)*(((2+3)/2)**2)

если f = cos

(3-2)*cos((2+3)/2)
imonkey
Slon
Я тебя правильно понял, тебе надо что то типа этого:
(b-a) * f((a+b)/2)

a =2
b =3
f = x**2

(3-2)*(((2+3)/2)**2)

если f = cos

(3-2)*cos((2+3)/2)
да, мне нужно именно это:):):):):) только на питоне:)
Slon
Ну тогда вперед, пиши =)

Так как модуля ‘чтения мыслей’ нет ни у одного языка программирования, то тебе необходимо предопределить то, что может ввести пользователь (cos, sin, tan и тд).

Тебе необходимо изменить функцию pram так чтобы в зависимости от введенного f вызывалась определенная конструкция.

Для расчета косинусов и других математических функций есть модуль math
wyvern48
Имею аналогичную проблему:
Пишу программу - построитель графиков, естественно нужно реализовать ввод произвольной функции, зависящей от переменных 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()
Вопрос: как сделать по-человечески?
sp3
>>> from math import *
... while 1:
... x = float(raw_input('x= '))
... y = float(raw_input('y= '))
... f = (raw_input('f= '))
... res = eval(f)
... print 'res:',res
x= 0.5
y= 2
f= y + cos(x) - sin(x) * pi
res: 1.37142281187
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB