Программирование и научные вычисления на языке Python/§5: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 7:
 
 
В этой программе ''C'' представляет ''входной'' параметр, который необходимо определить, перед тем как программа будет рассчитывать ''F'', ''выходные'' данные. Входные данные могут быть переданы программе как мы делали ранее, заданием значений переменных. Этот способ удобен для маленьких программ. Однако, традиционным хорошем стилем предполагается, что изменяющиеся данные вводятся в ходе работы программы. Это способ является не только более дружелюбным к пользователю, незнакомому с программированием, но и более оперативным способом, поскольку вы не можете изменять текст программы, когда она выполняется. Возможны как минимум четыре варианта ввода пользователем данных: 1) через окно консоли, 2) через командную строку, 3) посредством графического интерфейса, 4) записью данных в файл. Все эти способы мы рассмотрим здесь и далее.
 
Даже, если ваша программа работает правильно, неверные данные и ошибки ввода могут привести к непредсказуемым результатам. Поэтому мы познакомимся с перехватом ошибок и тем, что мы с ними после перехвата можем сделать.
Строка 253:
""" % formula
exec(code)</source>
 
 
Если, отвечая на вопрос, мы введем, например, <tt>sin(x)*cos(3*x) + x**2</tt>, то <tt>formula</tt> примет его и далее будет использована строкой <tt>code</tt>, которая будет работать как если бы:
 
 
<source lang="python">
"""
def f(x):
return sin(x)*cos(3*x) + x**2
"""</source>
 
 
но при этом формула может быть любой, которую мы захотим. Далее, ''exec'' выполняет все, что записано в <tt>code</tt>, как если бы мы записали все это сами. Таким образом, мы можем превратить любую данную пользователем функцию в функцию Python!
 
Давайте тут же опробуем. Добавим к предыдущему коду цикл <tt>while</tt>, позволяющий запускать программу множество раз, в зависимости от выбора пользователя:
 
 
<source lang="python">
x = 0
while x is not None:
x = eval(raw_input('Give x (None to quit): '))
if x is not None:
print 'f(%g)=%g' % (x, f(x))</source>
 
 
То есть теперь у нас есть программа, в которую мы вводим любую формулу, а потом любые значения x, пока нам не надоест и мы не введем <tt>None</tt>:
 
 
<code>
Write a formula involving x: x**4 + x <br>
Give x (None to quit): 1<br>
f(1)=2<br>
Give x (None to quit): 4<br>
f(4)=260<br>
Give x (None to quit): 2<br>
f(2)=18<br>
Give x (None to quit): None<br></code>