как можно заменить 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 ) 
→ Ссылка