2017-01-15 13 views
0

Я пытаюсь выяснить, что здесь происходит. Я прохожу через книгу Learn Python the Hard Way, и она дошла до того, что мне хотелось, чтобы я набирал сложную математику: как те математические проблемы, которые вы, возможно, получили в начальной школе. Проблема в том, что когда я запускаю проблему в файле с консоли, она дает ответ, отличный от того, что вы найдете, если вы набрали проблему непосредственно в консоли.Math в файле кода Python, который не тот же в консоли

Мой пример того, таким образом:

enter image description here

Первая линия проблема, в результате чего происходит из файла, в следующей строке. Затем я реплицирую ту же самую проблему в консоли, чтобы получить следующий результат.

Сайт намекает, что можно предположить, что число округлено вниз, в то время как автор говорит, что оно усекает число, или "dropping the fractional part after the decimal". Я не вижу ничего подобного.

Может ли кто-нибудь сказать мне, что здесь происходит? В настоящее время у меня установлен Python 2.7.

+1

И это одна из многих причин, почему вы не должны использовать LPTHW, главный из них в том, что Zed считает Python 3 является непроверенной причудой. Он ошибается. Установите последнюю версию Python 3, затем запустите [официальный учебник] (https://docs.python.org/3/tutorial/) на python.org. После этого проверьте [здесь] (http://sopython.com/wiki/What_tutorial_should_I_read%3F) для других учебных пособий и учебных материалов. В группах Reddit [r/python] (https://www.reddit.com/r/python) и [r/learnpython] (https://www.reddit.com/r/learnpython/wiki/index) есть много учебник и другую информацию на их сайтах. – MattDMo

+0

@ MattDMo: Zed сказал, что вы скажете это ... но я все равно посмотрю. –

ответ

1

Оба операнда в 1/4 являются целыми числами. Python не автоматически конвертирует результат этой операции в float. PowerShell делает. Следовательно, Python вычитает 0, тогда как PowerShell вычитает 0.25.

Изменить заявление Python это:

3 + 2 + 1 - 5 + 4 % 2 - 1.0/4 + 6       # returns 6.75 

, и вы получите тот же результат, как и в PowerShell.

Для PowerShell, чтобы дать тот же результат, как Python, вам нужно emulate an integer division:

3 + 2 + 1 - 5 + 4 % 2 - [Math]::Floor([int]1/[int]4) + 6 # returns 7 
1

В первом примере, вы выполняете арифметику в Python. Во втором случае вы используете консоль Windows. Они используют разные правила для оценки таких выражений - в частности, 1/4 (Python не использует поплавки, если вы не сообщите об этом, поэтому результат равен 0).

я получаю тот же ответ, когда я сравниваю сценарий Python против консоли Python:

# Python script. 
$ python -c 'print 3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6' 
7 

# The Python console. 
$ python 
Python 2.7.11 (default, Jul 30 2016, 18:49:54) 
>>> print 3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6 
7 

 Смежные вопросы

  • Нет связанных вопросов^_^