2015-10-21 3 views
1

Я хотел бы изменить этот код, чтобы он неоднократно запрашивал разные значения для x и выводил соответствующие значения для y.Повторные входы линейной интерполяции

x1 = input("x1 = ") 
x2 = input("x2 = ") 
y1 = input("y1 = ") 
y2 = input("y2 = ") 

x = input("x = ") 

y = y1 * ((x-x2)/(x1-x2)) + y2 * ((x-x1)/(x2-x1)) 
print y 

Я знаю, мне нужно, чтобы создать бесконечную петлю вокруг x ввода и самой функции, где вы можете создать перерыв, набрав слово, например, 'Stop', но, похоже, он не может нормально работать.

+0

Вы спрашиваете «как мне сделать эту остановку, когда кто-то типы' остановки '"? Нам непонятно, с чем вам нужна помощь или как ваш код «неправильный». – AlG

+0

Hey Relic, посмотрите эту ссылку: https://wiki.python.org/moin/WhileLoop У этого есть отличный пример использования слова остановки, чтобы вырваться из бесконечного цикла. Не откладывайте на @jonrsharpe, Stack Overflow в основном отвечает на конкретные технические вопросы, а не на дизайн или 'how-to' вопросы. – Symmitchry

+0

Спасибо за ответы, я думаю, я мог бы быть более конкретным с моим вопросом и, возможно, это было неправильное место, чтобы спросить. Я могу создать цикл, в котором он запрашивает пользователя для бесконечного ввода до тех пор, пока «ключевое слово» не будет использовано для его разлома, но я не знаю, как установить цикл в мой существующий код, чтобы получить повторяющиеся значения y, пока вы не сломаете его. Будет продолжать читать больше! – Relic

ответ

0

От print y линии это выглядит как вы используете Python 2.7 или более ранней версии, поэтому input("x = ") скорее всего, ответит вам ввод stop за исключением NameError: name 'stop' is not defined. Я предлагаю использовать raw_input, который возвращает вход пользователя в виде строки; вы можете проверить, равна ли строка строке "stop", прежде чем пытаться превратить ее в поплавок.

Принудительные входы, которые должны быть поплавками, также означают, что вам не нужно беспокоиться о целочисленном делении, путающем вещи (Google для from __future__ import division для более).

Вот пример:

x1 = float(raw_input("x1 = ")) 
x2 = float(raw_input("x2 = ")) 
y1 = float(raw_input("y1 = ")) 
y2 = float(raw_input("y2 = ")) 

print 'enter "stop" to end' 

while True: 
    rawx = raw_input("x = ") 
    if 'stop' == rawx: 
     print "stopping..." 
     break 

    x = float(rawx) 

    y = y1 * ((x-x2)/(x1-x2)) + y2 * ((x-x1)/(x2-x1)) 
    print y 

Run с Python 2.7 на моей системе Ubuntu 14.04, я получаю это:

$ python q33264238.py 
x1 = 1 
x2 = 2 
y1 = -1 
y2 = 1 
enter "stop" to end 
x = 1 
-1.0 
x = 2 
1.0 
x = 1.5 
0.0 
x = stop 
stopping... 
Смежные вопросы