1

引数が10より大きい場合は「ドーナツの数:多く」、引数がcount <10の場合は「ドーナツの数:」を指定します。しかし、それは常に私に「ドーナツの数:多く」を与えます

#!/usr/bin/python2.6 -tt
import sys
def donuts(count):
  if count < 10:
    x = str(count)
  else:
    x = 'many'
  print 'Number of donuts: ' + x

def main():
  donuts(sys.argv[1])

if __name__ == "__main__":
  main()
4

5 に答える 5

6

sys.argv引数として整数を指定した場合でも、文字列のみが含まれるため、たとえば、これをとして呼び出した場合python donuts.py 4sys.argv[1]、実際に必要なときに'4'比較を試みます。'4' < 104 < 10

したがって、最初にsys.argv[1]、intに変換してみてください。

def main():
    donuts(int(sys.argv[1]))

引数が指定されていない場合や整数でない場合は、エラー処理も追加することをお勧めします。

def main():
    try:
        donuts(int(sys.argv[1]))
    except IndexError:
        print 'Missing argument'
    except ValueError:
        print 'Invalid argument'
于 2012-04-06T20:50:30.647 に答える
5

count文字列です。試すcount = int(count)

于 2012-04-06T20:50:14.050 に答える
3

10と比較する前に、countをintに変換する必要があります。

#!/usr/bin/python2.6 -tt
import sys
def donuts(count):
    if int(count) < 10:
        x = count
    else:
        x = 'many'
    print 'Number of donuts: %s' % x

def main():
    donuts(sys.argv[1])

if __name__ == "__main__":
    main()
于 2012-04-06T20:48:21.600 に答える
3

count比較のために、パラメーターをintに変換してみてください。

if int (count) < 10:
  x = str (count)
else:
  x = 'many'

パラメータの文字列引数を渡しているためcount、比較は失敗します。

于 2012-04-06T20:50:20.087 に答える
3

そもそも入力を整数として受け取らないでください。

変化する:

def main():
  donuts(sys.argv[1])

に:

def main():
  donuts(int(sys.argv[1]))

ただし、数値の代わりに文字列または小数を入力すると、問題が発生します。

于 2012-04-06T20:50:37.033 に答える