2011-08-11 23 views
1

ビューコードにdjangoのタイプエラーが表示されています。 最寄り5. IE 7に切り上げしようとすると、私はその後、桁Django - Pythonマップを正しく使用していませんか?

valList[len(valList)-1] = 5 

を変更する整数

valList = [ int(i) for i in str(int(math.ceil(result))) ] 

のリストを持っているなど

、10または123 125となりになりますが値を結合して再び整数全体を作成します。

result = ''.join(map(str, valList)) 

、私はPythonのコンソール(とDjangoのシェルで)を使用する場合は、この方法が機能するint型

result = int(result) 

にキャストバックが、私は、これは私のDjangoのビューで実行したときに、私はTypeError Exception取得エラーはmap() takes exactly 1 argument (2 given)

私はこれを引き起こしている何かを理解することはできません....または私は間違っています。

ありがとうございました。

p.s.誰かが最も近い5に丸められる優雅な解を知っているなら、私はすべての耳です。

答えて

3

どのように数学的なソリューションについて:数に切り上げるする

>>> def f(n): 
... q, r = divmod(n,5) 
... if r == 0: 
...  return q * 5 
... else: 
...  return (q * 5) + 5 
... 
>>> f(7) 
10 
>>> f(123) 
125 
>>> f(120) 
120 
+0

これは完全に機能します。私は最初に最後の数字で修正を試みましたが、失敗しました。ありがとう。 – sdk900

0

最初に、valList[len(valList)-1]valList[-1]と書かれています。引数の問題については、私のpythonコンソールにmap() requires at least two argsがあるので、mapが別の関数に置き換えられているかどうかを確認してください。

3

一般的な方法は、整数の数学で、次のとおりです。

(((number - 1) // base) + 1) * base 

は、他の言語のための///を交換してください。

valList[-1] = 5 

リストの最後の項目にアクセスするには

は最後に、あなたの名前空間にいくつかの他のmapを持っています。それを見つけて名前を変更します。

+0

なぜ分割だけではなく、フロア分割 '//'が必要なのですか? – MattH

+0

'float'を入れても' int'を得ることができます。これは期待される動作だと思います。 – agf

+0

nice。あなたのソリューションは私のものよりもエレガントで、私はそれを+1しました。しかし、私は個人的に私が理解しやすいと思っています。 – MattH

関連する問題