Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2017 13:48:06

canon_5d
Зарегистрирован: 2017-04-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи с малюсеньким фрагментом кода

Коллеги,
не могу понять почему вот этот вот фрагмент кода:

 a = []
while True:
    b = input()
    if b == 'end':
        break
    k = [int(i) for i in b.split()]
    a.append(k)
print(a)

приводит к правильному выводу:

C:\Anaconda3\python.exe “C____/Python Projects/Stepic.py”
1 2 3
4 5 6
7 8 9
end
[, , ]

Process finished with exit code 0

в вот этот (в котором собственно вместо b = input() используется input()):

 a = []
while True:
    if input() == 'end':
        break
    k = [int(i) for i in input().split()]
    a.append(k)
print(a)

приводит к ошибке:

C:\Anaconda3\python.exe “C____/Python Projects/Stepic.py”
1 2 3
4 5 6
7 8 9
end
Traceback (most recent call last):
File “C____/Python Projects/Stepic.py”, line 23, in <module>
k =
File “C____/Python Projects/Stepic.py”, line 23, in <listcomp>
k =
ValueError: invalid literal for int() with base 10: ‘end’

Process finished with exit code 1

СОБСТВЕННО вопрос не в том в чём ошибка, а в том какая разница между b = input() и просто input()???

Отредактировано canon_5d (Апрель 14, 2017 13:48:54)

Офлайн

#2 Апрель 14, 2017 13:55:18

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Прошу помощи с малюсеньким фрагментом кода

canon_5d
ValueError: invalid literal for int() with base 10: ‘end’
'end' в инт плохо преобразуется

Офлайн

#3 Апрель 14, 2017 14:18:26

canon_5d
Зарегистрирован: 2017-04-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи с малюсеньким фрагментом кода

Повторюсь,
вопрос не в том, что во что плохо преобразуется )))
Вопрос в том какая разница между b = input() и просто input()???
Т.е. почему первый фрагмент кода отрабатывает, а второй - нет.

Офлайн

#4 Апрель 14, 2017 14:45:36

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Прошу помощи с малюсеньким фрагментом кода

canon_5d
Вопрос в том какая разница между b = input() и просто input()???
в первом случае результат того что вы ввели в input() связываеться с переменной b, во втором случае то что вы ввели в input() уходит в никуда.
Если первый раз вы ввели не ‘end’ то выполняеться кусок
 k = [int(i) for i in input().split()]
этот input() уже никак не связат с тем что вы проверяли в: if input() == ‘end’:



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#5 Апрель 14, 2017 15:14:59

canon_5d
Зарегистрирован: 2017-04-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи с малюсеньким фрагментом кода

Ааааа …. вот оно как ….
СПАСИБО за пояснение!!!

Офлайн

#6 Апрель 14, 2017 16:48:02

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Прошу помощи с малюсеньким фрагментом кода

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)
Пример работы программы:

Офлайн

#7 Апрель 15, 2017 13:44:56

canon_5d
Зарегистрирован: 2017-04-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи с малюсеньким фрагментом кода

Спасибо!!!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version