2016-05-29 3 views
0

У меня есть список поплавков (L1), и я хочу создать L2, который является L1 * a. Я хочу, чтобы пользователь увидел график L1 и L2, чтобы увидеть, удовлетворен ли он «а», который он ввел. Он может ввести другой «а», пока он не доволен сюжетом, а затем нажмите «Ввод», чтобы закончить цикл while. Я попробовал следующее, но мой код только графиков, когда я нажимаю enter (и не каждый раз, когда вводится новый a). Что я делаю не так?Использование цикла while для ввода пользователя до тех пор, пока не будет нажата клавиша Enter

import matplotlib.pyplot as plt 
L1 = [10.1, 11.2, 12.3, 13.4, 14.5, 13.4, 12.3, 11.1, 10.0] 
done = False   
while not done: 
    a = float(input("Please enter alpha (between 0 and 1), Enter to exit: ")) 
    L2 = [x * a for x in L1] 
    plt.plot(L1) 
    plt.plot(L2) 
    if a == "": 
     done = True 

ответ

0

Здесь вы принуждая вход в float

a = float(input("Please enter alpha (between 0 and 1), Enter to exit: ")) 

И здесь вы проверяете, если что float является пустой string (который не может быть)

if a == "": 
    done = True 

Я бы предложил

while not done: 
    a = input("Please enter alpha (between 0 and 1), Enter to exit:") 
    if a == "": 
     done = True 
    else: 
     a = float(a) 
     L2 = [x * a for x in L1] 
     plt.plot(L1) 
     plt.plot(L2) 
+0

Хотя вы по праву отметили ошибки в моем коде, которые я ценю, он по-прежнему не ведет себя так, как я этого хотел. Код по-прежнему зацикливается на «a», и график появляется только после того, как я нажал Enter. – cJc

+0

Я не понимаю, что вы имеете в виду? С приведенным выше кодом, когда вы только нажмете enter, он выйдет. Когда вы вводите 'float' и нажимаете enter, он будет вызывать методы' plot' и запрашивать другой номер. – C14L

+0

импорта matplotlib.pyplot, как PLT L1 = [10.1, 11.2, 12.3, 13.4, 14.5, 13.4, 12.3, 11.1, 10.0] сделано = False , пока не сделано: а = вход ("Пожалуйста, введите альфа (от 0 и 1), Enter для выхода: ") если == "": сделан = True еще: а = поплавок (а) L2 = [х * а для й в L1] plt.plot (L1) plt.plot (L2) Пожалуйста, введите альфа (между 0 и 1), Enter для выхода: 0,7 Пожалуйста, введите альфа (между 0 и 1), Enter для выхода: – cJc