как можно заменить try/except
нужно сделать так чтобы код работал без try/except и при этом не давал вводить буквы и отрицательные числа
while True:
try:
a = float(input('Введите число ').replace(",", ".")[:3])
except ValueError:
print("Пожалуйста введите число")
continue
break
print(a)
Ответы (4 шт):
Автор решения: Никита Иванов
→ Ссылка
while True:
a = input('Введите число ').replace(",", ".")[:3]
q = "1234567890."
count = 0
for i in range(len(q)):
for e in range(len(a)):
if a[e] == q[i]:
count += 1
if count == len(a):
break
else:
print("Пожалуйста введите число")
Автор решения: alex
→ Ссылка
while True :
a = input( 'Введите число ' )
if a.isdigit() :
if int( a ) > 0 : # это число больше нуля
break
if a.replace( '.', '', 1 ) : # это число, а не строка
if float( a ) > 0 :
break
print( a )
Автор решения: Алексей Белкин
→ Ссылка
def formDict():
Dictionary_data = []
for i in range(65, 92):
Dictionary_data.append(chr(i))
for i in range(97, 123):
Dictionary_data.append(chr(i))
for i in range(1040, 1104):
Dictionary_data.append(chr(i))
return Dictionary_data
dict_letter = formDict()
flag = False
while True:
var = input('Введите число=')
if var:
flag = True
for element in var:
if element in dict_letter:
flag = False
print('Пожалуйста, введите число')
break
if flag:
var = float(var.replace(",", "."))
if var<0:
flag = False
print('Число не должно быть отрицательным!')
if flag:
break
print(var)
Либо более короткая запись, но тогда числа c запятой не пройдут:
flag = False
while True:
var = input('Введите число=')
if var:
if var.isdigit():
var = float(var.replace(",", "."))
else:
print('Пожалуйста, введите число')
if flag:
break
print(var)
@min_4enko, Ну или другой подход 1го варианта. Думаю самый подходящий:
dict_number = [str(i) for i in range(10)]
dict_number.extend([',','.'])
flag = False
while True:
var = input('Введите число=')
if var:
flag = True
for element in var:
if element in dict_number:
continue
else:
flag = False
print('Пожалуйста, введите число')
break
if flag:
var = float(var.replace(",", "."))
break
print(var)
Автор решения: alex
→ Ссылка
isdigit = False
while not isdigit :
a = input( 'Введите число ' )
a = a.replace( ',', '.' )
isdigit = True # предполагаем, что ввели число
for char in a : # проверяем каждый символ
if char not in [ *'0123456789.' ] :
isdigit = False
if a.count( '.' ) > 1 :
isdigit = False
print( a )