Разница между обработкой целых чисел в Python 2.6.4 и Python 3.1.2 - PullRequest
3 голосов
/ 01 марта 2012

Почему

x = 15
if (x/2) * 2 == x:
    print 'Even'
else: print 'Odd'

Оценить до Нечетное в Python 2.6.4?

В то время как в 3.1.2 (с круглыми скобками вокруг операторов печати, конечно)оценивается в Четный ?

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

В Python 2.x оператор / по умолчанию использует целочисленное деление.Начиная с Python 3.x (или если вы запускаете программу 2.x с from __future__ import division), оператор / выполняет деление с плавающей запятой.Это задокументировано в PEP238 .

Вам следует использовать //, если вы хотите целочисленное деление, или начинать свои программы с from __future__ import division, если вы хотите деление с плавающей запятой до 2.x.

Обратите внимание, что общим способом проверки, является ли число четным или нечетным, является деление по модулю с оператором %;например:

x = 15
print ('even' if x % 2 == 0 else 'odd')

Подробнее об этих и других операторах см. в руководстве Python .

2 голосов
/ 01 марта 2012

Оператор / выполняет целочисленное деление в Python 2.x, а оператор с плавающей запятой в Python 3.x. Вы можете использовать // для целочисленного деления.

Проверка четности целого числа проще с помощью оператора по модулю:

if x % 2:
    print("odd")
else:
    print("even")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...