@apautina

Можно ли python 3, разделить числа с плавающей запятой от целочисленных?

Суть вопроса:
В диапазоне от 1 до 5, найти все целые числа кратные 2 и вывести их (целые=2 ,4), найти все число с плавающей запятой кратные 2 и вывести их (п.з.=0,5, 1,5, 2,5).
Заранее прошу прощения, если мой вопрос покажется глупым...
  • Вопрос задан
  • 403 просмотра
Пригласить эксперта
Ответы на вопрос 4
@mactep3230
Я так понял, требуется что то вроде этого:
inum = []
fnum = []
for i in range(1,6):
    if i % 2 == 0:
        inum.append(i)
    else:
        fnum.append(i/2)
print(f"целые={','.join([str(n) for n in inum])}")
print(f"п.з.={','.join([str(n) for n in fnum])}")
Ответ написан
Комментировать
@saw_tooth
in_data = [....]
for i in in_data:
   if isinstance(i, int) and not i%2:
      {bla bla bla}
   if isinstance(i, float) and not i%2:
     {bla bla bla}

Естественно это можно оформить более грамотно, с помощью:
- генератора (длинного но всё же)
- filter/map функции (более лаконично)
in_data = [....]
floats = filter(isinstance(i, float), in_data))
ints = filter(isinstance(i, int), in_data))

Основной посыл, что в python - всё классы, значит нужно запрашивать для каждого элемента его тип
Ответ написан
Комментировать
tsarevfs
@tsarevfs
C++ developer
В диапазоне от 1 до 5, найти все целые числа кратные 2

Тут нужно явно проверить делимость. А именно что остаток равен 0:
>>> 4 % 2 == 0
True
>>> 3 % 2 == 0
False

Найти все числа с плавающей запятой кратные 2

А вот тут проблема с определением. кратность определена для целых чисел. Уточните что вы имеете в виду.
Если вы хотите из списка floating point чисел найти целые и одновременно кратные 2, то это просто 2 отдельные проверки. Проверку на то что число целое можно сделать так:
>>> a = 2.0
>>> b = 2.1
>>> int(a) == a
True
>>> int(b) == b
False

Однако если floating point число получилось в результате вычислений, то за счет погрешности вы можете никогда не получить целое:
>>> c = 0.1 + 0.1 + 0.1 - 0.3
>>> c
5.551115123125783e-17
>>> int(c) == c
False
>>> abs(c - int(c)) < 1e-10
True
Ответ написан
Комментировать
shabelski89
@shabelski89
engineer
Всё таки мне кажется должно быть проще, на уровне школьной математики.
1. Все целые числа кратные 2, то есть чётные.
for i in range(5):
    if i % 2 == 0 :
        print (i)

результат
0
2
4

2. Все дробные части четные, то есть 1,1 берем 0,1 - не подходит, 1,2 берем 0,2 подходит.
for i in range (1, 5):
    for j in range(10):
        if j % 2 == 0:
            x = i + j / 10
            print(x)

результат
1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8
3.0
3.2
3.4
3.6
3.8
4.0
4.2
4.4
4.6
4.8
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы