Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2018 14:30:13

Like_a_Doshi
Зарегистрирован: 2018-07-06
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка на ввод числа

Здравствуйте пользователи сообщества, подскажите как повторить запрос ввода если пользователь вводит строку? Когда гуглил нашел решение 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)

Офлайн

#2 Июль 6, 2018 14:52:24

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

Проверка на ввод числа

самый просто способ

 ...
except ValueError:
	print("Введите числовое значение")
        continue # переход к следующему витку цикла
...
или же
 ...
    try:
      ....
    except ValueError:
	print("Введите числовое значение")
    else: # else выполниться только если не было исключения
	if s <= 0:
           .....



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

Отредактировано PEHDOM (Июль 6, 2018 14:53:22)

Офлайн

#3 Июль 6, 2018 15:40:16

Like_a_Doshi
Зарегистрирован: 2018-07-06
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка на ввод числа

PEHDOM
самый просто способ
Благодарю, работает.
Только вот теперь когда я ввожу дробное значение например 0.50 $ он мне выдает 25 монет,а должен 2 монеты по 25. Нужно будет пересмотреть цикл.
Но это уже моя проблема)
Хотелось бы еще узнать почему не работает условие:
 if type(s) != float:
Мне как для новичка такая запись очень удобна и понятна,может это работает только в старых версиях python? или это вообще на другом языке ? XD

Отредактировано Like_a_Doshi (Июль 6, 2018 15:40:58)

Офлайн

#4 Июль 6, 2018 15:52:44

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

Проверка на ввод числа

Like_a_Doshi
Хотелось бы еще узнать почему не работает условие: if type(s) != float:
это пому что input всегда строку возвращает, а float(input()) или успешно преобразует в float или выдаст исключение и условие или всегда ложно или до него даже не доходит.



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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version