Уведомления

Группа в Telegram: @pythonsu

#1 Июль 21, 2018 04:38:48

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

Выводит число "4.0" вместо "4"

Приветствую сообщество.
Простая программка для вычисления корня числа.
Вот только на экран выводится 4.0 , 8.0 и тд.

 def koren():
	print("Введите целое (+) число:")
	x = float(input())
	b = float(x ** 0.5)
	print("Корень из", x,"равен", float(b))
koren()
a = 0
while a == 0:
	print("Еще раз? Да/Нет")
	z = input()
	if z == "Да":
		koren()
	elif z == "да":
		koren()
	elif z == "Нет":
		a = a + 1
		b = print("Завершение...")
	elif z == "нет":
		a = a + 1
		b = print("Завершение...")

Если в строке с принтом корня поменять тип с float на int то нули убираются и все работает.
Вот только если корень числа имеет 16 знаков после запятой он мне их не выведет.
Как я понимаю требуется проверка на получившееся число?
И подскажите как упростить цикл, пытался через or (“Да” or “да”) но чет при выборе 2 варианта прога ломаетсяD

Офлайн

#2 Июль 21, 2018 08:20:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Выводит число "4.0" вместо "4"

Like_a_Doshi
Как я понимаю требуется проверка на получившееся число?
Нет конечно! Операция возведения в степень работает с плавающими числами т.е. все вычисления ведутся приближенно и код совершенно верно на это указывает.
Есть другие правила вывода приближенных чисел:
 "{:g}".format(36**0.5)



Отредактировано doza_and (Июль 21, 2018 08:21:18)

Офлайн

#3 Июль 21, 2018 10:08:46

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

Выводит число "4.0" вместо "4"

doza_and
Воу,работает. Благодарю!
Я разобрался с циклами и добавил пару проверок на ввод.
Если есть что добавить или улучшить пишите, буду очень рад.
Я совсем недавно начал изучать python да и языки в целом, поэтому “format” для меня было что то совершенно новым)

 def koren():
	n = 0
	while n == 0:
		try:
			x = int(input("Введите целое (+) число:"))
		except ValueError:
			print("Введите числовое значение!")
			continue
		if x <= 0:
			print("Введите положительное число!")
		else:
			b = "{:g}".format(x**0.5)
			print("Корень из", x,"равен", format(b))
			n = n + 1
koren()
a = 0
while a == 0:
	print("Еще раз? Да/Нет")
	z = input()
	if z == "Да" or z == "да":
		koren()
	elif z == "Нет" or z == "нет":
		a = a + 1
		b = print("Завершение...")

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version