2017-01-15 17 views
0

私はここで何が起こっているのか調べようとしています。私はLearn Python the Hard Way本を流れています。それは、私が複雑な数学を打ちたいという要望に達しました。あなたが小学校で得たスピードの数学の問題のようなものです。問題は、コンソールからファイル内の問題を実行すると、コンソールに問題を直接入力した場合とは異なる回答が生成される場合です。Pythonでの数学のコードがコンソールで同じではない

私の例では、このようにされて:

enter image description here

最初の行は次の行されているファイルから来ている結果に問題があります。次に、正確に同じ問題をコンソールに複製して、次の結果を得ます。

このサイトでは、数値が切り捨てられていると言われていますが、数値は切り捨てられていると思われます。または"dropping the fractional part after the decimal"です。私はこれらのことが起こっていないのを見ている。

ここで何が起こっているのか教えていただけますか?私は現在、Python 2.7をインストールしています。

+1

そして、これはあなたがLPTHWを使用してはならない多くの理由の一つでありますテストされていない流行です。彼は間違っている。 Python 3の最新バージョンをインストールし、python.orgで[公式チュートリアル](https://docs.python.org/3/tutorial/)を入手してください。その後、他のチュートリアルや教材については、[ここ](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:ゼッドはあなたがそう言っていると言った...しかし、私はとにかく見るだろう。 –

答えて

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を使用すると、emulate an integer divisionに必要Pythonのように同じ結果を与えるためには

:最初の例で

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

を、あなたがPythonで算術演算を実行しています。 2番目の方法では、Windowsコンソールを使用しています。彼らはそのような式、特に1/4の部分を評価するために異なる規則を使います(あなたが指示しない限り、Pythonは浮動小数点を使用しないので、結果は0です)。

私はPythonのコンソール対Pythonスクリプトを比較したときに、私は同じ答えを得る:それらの間のチーフは、ゼッドは、Python 3を考えているということで、

# 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 
関連する問題