Как я могу остановить все oop, когда перерыв не работает? - PullRequest
1 голос
/ 21 февраля 2020
x=[]
while True:
    try:
        x.append(float(input('what are your numbers?\n')))
        if x.append('done'):
            break
    except:
        print('bad data')
        continue
print(len(x), sum(x), min(x), max(x))

В этом коде я хочу, чтобы пользователь предоставлял числа, пропускал строки, и, наконец, я хочу l oop, когда пользователь вводит слово "done", но оно не работает, что я здесь не так делаю?

Ответы [ 3 ]

3 голосов
/ 21 февраля 2020

Сначала присвойте входное значение переменной, чтобы вы могли использовать его для сравнения и преобразования в плавающее число.

x=[]

while True:
    inp = input('what are your numbers?\n')
    if inp == 'done':
        break
    try:
        x.append(float(inp))   
    except ValueError:
        print('bad data')

print(len(x), sum(x), min(x), max(x))
1 голос
/ 21 февраля 2020

Вы должны сначала проверить, является ли ввод 'done' перед вставкой в ​​ваш список, потому что max повысит TypeError, если какой-либо из элементов списка не является числом. Кроме того, continue не требуется в вашей реализации, потому что это последний оператор в вашей l oop:

x=[]
while True:
    try:
        data = input('what are your numbers?\n')
        if data == 'done':
            break
        else:
            num = float(data)
            x.append(num)
    except:
        print('bad data')

print(len(x), sum(x), min(x), max(x))
1 голос
/ 21 февраля 2020

Этот код не прерывается, когда ввод «завершен»

    if x.append('done'):
        break

Добавляет строку «выполнено» в список x. append возвращает None, поэтому ваше состояние всегда False. break будет работать просто отлично - вы должны написать свой код, чтобы туда попасть. Проверьте правильность ввода перед тем, как конвертировать в float. Во время этого процесса проверьте «сделано»:

    user_input = input('what are your numbers?\n')
    if user_input == "done":
        break
    # Continue checking the input
...