Форум сайта python.su
Коллеги,
не могу понять почему вот этот вот фрагмент кода:
a = [] while True: b = input() if b == 'end': break k = [int(i) for i in b.split()] a.append(k) print(a)
a = [] while True: if input() == 'end': break k = [int(i) for i in input().split()] a.append(k) print(a)
Отредактировано canon_5d (Апрель 14, 2017 13:48:54)
Офлайн
canon_5d'end' в инт плохо преобразуется
ValueError: invalid literal for int() with base 10: ‘end’
Офлайн
Повторюсь,
вопрос не в том, что во что плохо преобразуется )))
Вопрос в том какая разница между b = input() и просто input()???
Т.е. почему первый фрагмент кода отрабатывает, а второй - нет.
Офлайн
canon_5dв первом случае результат того что вы ввели в input() связываеться с переменной b, во втором случае то что вы ввели в input() уходит в никуда.
Вопрос в том какая разница между b = input() и просто input()???
k = [int(i) for i in input().split()]
[code python][/code]
Офлайн
Ааааа …. вот оно как ….
СПАСИБО за пояснение!!!
Офлайн
canon_5d
Конечно, это плохой стиль программирования. Но если пользователь вводит данные аккуратно, то ваша программа работает без ошибок. Я ничего не менял, только для ясности добавил подсказки пользователю в вызовы input(), и ваша программа нормально работает:
a = [] while True: if input('Для продолжения введите все что угодно, кроме "end": ') == 'end': break k = [int(i) for i in input('Введите целые числа через пробел, окончание ввода - <Enter>: ').split()] a.append(k) print(a)
Офлайн
Спасибо!!!
Офлайн