Форум сайта python.su
0
Здравствуйте пользователи сообщества, подскажите как повторить запрос ввода если пользователь вводит строку? Когда гуглил нашел решение c try и except, но это работает только в том случае если первый раз был ввод числа а последующие(бесконечный цикл while == 0) строки или символы.
Пробывал через if type(s) == str, но это не работает( Я еще совсем новичок,подскажите пожалуйста. На всякий выложу код целиком.
a = 25 b = 10 c = 5 d = 1 i = 0 #25 f = 0 #10 g = 0 #5 h = 0 #1 x = 0 while x == 0: try: s = float(input("Введите вашу сдачу в $:")) except ValueError: print("Введите числовое значение") if s <= 0: print("Неверное значение, повторите ввод") else: if s > 0: s = s * 100 #print("Ваша сдача:", s,"центов") print("Сдача выдается монетами следующих номиналов: \n", a ,'центов ||', b, 'центов ||', c, 'центов ||', d,"цент") print("При расчете будет указано общее кол-во монет") if s > a: while s >= a: s = s - a i += 1 while s >= b: s = s - b f += 1 while s >= c: s = s - c g += 1 while s >= d: s = s - d h += 1 n = int(i + f + g + h) print("Ваша сдача:", n) #x += 1
Отредактировано Like_a_Doshi (Июль 6, 2018 14:31:17)
Офлайн
294
самый просто способ
... except ValueError: print("Введите числовое значение") continue # переход к следующему витку цикла ...
... try: .... except ValueError: print("Введите числовое значение") else: # else выполниться только если не было исключения if s <= 0: .....
[code python][/code]
Отредактировано PEHDOM (Июль 6, 2018 14:53:22)
Офлайн
0
PEHDOMБлагодарю, работает.
самый просто способ
if type(s) != float:
Отредактировано Like_a_Doshi (Июль 6, 2018 15:40:58)
Офлайн
294
Like_a_Doshiэто пому что input всегда строку возвращает, а float(input()) или успешно преобразует в float или выдаст исключение и условие или всегда ложно или до него даже не доходит.
Хотелось бы еще узнать почему не работает условие: if type(s) != float:
[code python][/code]
Офлайн