Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 24, 2013 08:29:11

python_new
Зарегистрирован: 2013-11-24
Сообщения: 2
Репутация: +  0  -
Профиль  

Определить целое число или нет

Здравствуйте. С Python познакомился только вчера, возникло много вопросов, большинство нахожу на форумах, а вот с этим не смог справиться сам.

Пример: выводятся подобные большие числа:

5263157894736.632
52631578947368.21
526315789473684.0
5263157894736842.0
5.2631578947368424e+16
5.263157894736842e+17
Задача: вывести только целое число (из примера это 5263157894736842.0). Как организовать такую проверку?

Офлайн

#2 Ноя. 24, 2013 08:48:28

Tort
От:
Зарегистрирован: 2009-10-15
Сообщения: 30
Репутация: +  0  -
Профиль  

Определить целое число или нет

> вывести только целое число
>>> s = 1.5
>>> int(s)
1



Отредактировано Tort (Ноя. 24, 2013 08:55:27)

Офлайн

#3 Ноя. 24, 2013 08:57:12

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

Определить целое число или нет

lst = [5263157894736.632, 52631578947368.21, 526315789473684.0, 5263157894736842.0,
       5.2631578947368424e+16, 5.263157894736842e+17]
for i in lst:
    if i.is_integer():
        print(i)

Офлайн

#4 Ноя. 24, 2013 08:57:39

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Определить целое число или нет

define “целое число”
из примера последние четыре можно назвать целыми

Офлайн

#5 Ноя. 24, 2013 09:11:05

python_new
Зарегистрирован: 2013-11-24
Сообщения: 2
Репутация: +  0  -
Профиль  

Определить целое число или нет

Tort
> вывести только целое число>>> s = 1.5>>> int(s)1
Это преобразование в целое ведь? Мне нужно именно отобрать целое число

smoke853
Спасибо, похоже это то, что я и искал

sergeek
Да, вы правы. Мне другие не нужны, так что после вывода первого такого числа сделаю break

Офлайн

#6 Ноя. 24, 2013 12:06:46

Tort
От:
Зарегистрирован: 2009-10-15
Сообщения: 30
Репутация: +  0  -
Профиль  

Определить целое число или нет

python_new
Tort
> вывести только целое число>>> s = 1.5>>> int(s)1
Это преобразование в целое ведь? Мне нужно именно отобрать целое число

Да. Сорь. Я вопрос невнимательно прочитал.



Офлайн

#7 Ноя. 24, 2013 15:36:49

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Определить целое число или нет

Влезу я и сюда, со своей функциональщиной, может пригодится:

>>> filter(float.is_integer, map(float, [1., 2, '3.33', 4.5, 5.67, '6.']))
[1.0, 2.0, 6.0]
`map` здесь не нужен, если есть уверенность, что все элементы списка, это <float>.

..bw



Офлайн

#8 Ноя. 24, 2013 15:53:36

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Определить целое число или нет

bw
Влезу я и сюда, со своей функциональщиной

filter(lambda x: not O.itemgetter(0)(math.modf(x)), [5.23e+5, 2, 3, 2.5])



Отредактировано Budulianin (Ноя. 24, 2013 16:05:13)

Офлайн

#9 Ноя. 24, 2013 16:31:22

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Определить целое число или нет

`O.itemgetter` здесь совершенно лишний, можно и просто `math.modf(x)[0]`. По мотивам предыдущего, но сохраняя нелюбовь к `lambda` можно сделать так:

>>> import math
>>> import itertools as I
>>> import operator as O
>>> I.imap(O.itemgetter(1), I.ifilterfalse(O.itemgetter(0), I.imap(math.modf, [5.23e+5, 2, 3, 2.5])))
<itertools.imap object at ...>
>>> list(_)
[523000.0, 2.0, 3.0]

..bw



Отредактировано bw (Ноя. 24, 2013 16:34:05)

Офлайн

#10 Ноя. 24, 2013 18:21:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Определить целое число или нет

bw
>>> import itertools as I
>>> import operator as O
это нарушает pep8 (пиши модули маленькими буквами)
вообще, большие буквы используются либо для классов, либо для констант

bw
O.itemgetter(0)
поэтому вот это читается как “какой-то класс O имеет метод itemgetter”



Отредактировано py.user.next (Ноя. 24, 2013 18:21:45)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version