Вопрос Проблема пустой строки в int (python)

Регистрация
1 Дек 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Задачу я решил, но вопрос один остался.

Нужно было прекратить цикл на вводе пустой строки, выдавало ту самую ошибку:

ValueError: invalid literal for int() with base 10: ''

Проблему решил с помощью int(input() or 0)

Но вот какая была задача: 2 ввода, первый на левую границу и второй на правую, дальше ввод цифр до тех пор, пока не введется пустая строка и если хоть одна цифра из ввода выходит за границы то на вывод False, иначе True

Задачу решил по всем тестам, но когда сам тестировал с границами 1 и 10, а на ввод добавлял 0, то выводило True сразу и цикл сам прерывался, не пойму почему, даже дописал код, что если данные будут == 0, чтобы выводило False, но все равно даже после цикла код не выполнялся.

Объясните, пожалуйста, простым языком начинающему программисту, почему так произошло и как это предотвратить
 
Без заморочек решается через "try". Пустой ввод (или не цифры, напр х) вызовет ошибку, чего и надо.
Вводится и 0 в том числе, конец ввода - Enter, пустая строка x=[]
while True:
try:
x.append(int( input('x['+str(len(x)+1)+']= ')))
except:
break
print(*x)
 
a, b = int(input()), int(input())
flag = True
while True:
n = input()
if n and (int(n) < a or int(n) > b) and flag:
flag = False
elif not n:
break
print(flag)
 
Проблема в том, что твой вариант решения проблемы не различает ситуации &#34;ввели пустую строку&#34; и &#34;ввели 0&#34;.

Специально для указанного в задаче способа ввода в Python есть стандартная функция iter: for s in iter(input, ''):
n = int(s)
... или сразу получать числа: for n in map(int, iter(input, '')):
...
 
1 вариант
#у нас есть переменная ответ в которое ты вводишь число
otvet = input (&#34;введите число: &#34;)
#Тут у нас переводиться с str (обычного текста) на int(число)
try:
otvet = int(otvet)
#Если программа выдаёт ошибку то у нас печатается текст и программа закрывается
except:
print(&#39;вы ввели буквы, а ни число от 1 до 3.&#39;)
exit()
2 вариант
#тут бесконечный цикл
while True:
#берём число
otvet = input(&#34;Введите число: &#34;)
#если всё верно бесконечный цикл прерываеться и программа идёт дальше
try:
otvet = int(otvet)
break
#если выдаётся ошибка то цикл идёт заново
except:
print(&#34;Введите число, а ни букву&#34;)
 
Назад
Сверху