1

私は単純なpythonプログラムを持っています

除算後、終了値が表示されますが、.01は表示したくありません

from __future__ import division

number = int(133)
output = float(0)
divideNumber = int(1)

stop = false

while stop == false
   halfNumber = number / 2
  output =  number / divideNumber 
  output = round(output, 2)

  if ".0" in str(output):
    if "0.1" in str(output) or "0.2" in str(output ) or.... "0.9" in str(output): 
      #Do Nothing
  else: 
      #Do Nothing
    else: 
      print str(number) + " / " + divideNumber + " = "str(output)

  divideNumber += 1

  if divideNumber < halfNumber:
    break
  else: 
    #Do Nothing
print "Goodbye"

私がそれを実行すると、これが結果です:

133 / 1 = 133.0
133 / 7 = 19.0
133 / 11 = 12.09
133 / 12 = 11.08
133 / 19 = 7.0
133 / 22 = 6.05
133 / 33 = 4.03
133 / 43 = 3.09
133 / 44 = 3.02
133 / 64 = 2.08
133 / 65 = 2.05
133 / 66 = 2.02

さようなら

私の期待される結果は

 133 / 1 = 133.0
 133 / 7 = 19.0
 133 / 19 = 7.0
 Goodbye

私の「if」ステートメントは間違っていますか?エラーはありませんでした。

4

3 に答える 3

3

「私は単純な python プログラムを持っています」

これは単純なプログラムではありません。

結果を 10 進数 1 桁で表示する場合は、次のようにします。

print '{:.1f}'.format(133./19.)

これは印刷します

7.0

ある整数が別の整数を割るかどうかをテストする場合:

if not x%y:
    # y divides x
于 2013-01-11T08:25:38.843 に答える
2

私が正しければ、丸められていない数字を含むすべての数字をスキップする必要があります。このチェックは次のようになります。

from math import floor

if (output - floor(output))>0: # skip
    continue
于 2013-01-11T08:30:04.943 に答える
1

次のような関数を定義でき133.0==133ますTrue::

In [1]: def func(x,y):
   ...:     a=float(x)/float(y)
   ...:     return int(a)==a
   ...: 

In [2]: func(133,1)
Out[2]: True

In [4]: func(133,11)
Out[4]: False

In [5]: func(133,12)
Out[5]: False

In [6]: func(133,19)
Out[6]: True

からdivision インポート__future__

In [14]: from __future__ import division

In [15]: def func(x,y):
    return x/y == int(x/y)
   ....: 

In [16]: func(133,1)
Out[16]: True

In [17]: func(133,11)
Out[17]: False

In [18]: func(133,12)
Out[18]: False

In [19]: func(133,19)
Out[19]: True
于 2013-01-11T08:26:37.040 に答える