2012-01-10 15 views
0

私はPythonで初めてです。ここでは、入力としてtcのテストケースの数をスキャンし、次に2つの整数rcをスキャンし、結果を計算するコードを示します。Pythonコードのエラー

質問:エラーを取り除くにはどうすればよいですか?

Traceback (most recent call last): 
File "spoj_solders.py", line 5, in <module> 
    if r%2==0: 
TypeError: not all arguments converted during string formatting 

この文字列の書式はどのようなものです:

#!bin/bash/python 
tc=int(input()); 
while tc: 
    r,c=raw_input().split() 
    if r%2==0: 
     r=r/2 
    else: 
     r=r/2+1 
    print(r*c) 
    tc=tc-1 

4  //input tc 
10 10 //input r=10 c=10 

エラーが画面に表示されますか?

プラットフォーム:Ubuntuは10.04

答えて

2

r,c=raw_input().split()strタイプとして返​​し、ユーザ(raw_input())からテキストを取得し、分割し、その二つの文字列(スペースで区切られた)格納する変数のものrとにc。だから、rstrで、あなたはこのようなintrをキャストせずにif r%2==0:言うことはできません。

r,c=raw_input().split() 
if int(r)%2==0: 
    r=int(r)/2 
else: 
    r=int(r)/2+1 
print(r*c) 
tc=tc-1 
+0

私はR = 10&C = 10のための答え50をしたいが、1010101010、= 4 –

+0

[OK]をその作業TCを与えている、あなたは '数学を使用する必要があります –

+0

の助けをどうもありがとうございましたフロートを使用している場合は.fmod()を使用します。入力がfloatではなくintにキャストされている場合、 'r%2'を使用すると問題ありません。ユーザが小数点を入力したかどうかをチェックして、どのメソッドを使用するかを決めることができます。 – snim2

2

split()呼び出しの結果は、文字列のリストである、したがって、rc変数も文字列であります。

したがって、r%演算子を使用する場合、Pythonは文字列フォーマットを実行していて、期待するモジュラス演算ではありません。

rを最初に正しいタイプの変数にキャストする必要があります(たとえばfloat(r)を使用)。

+1

:)どういたしまして – jozzas

+0

ありがとうございました@jozzas私はそれを認識していませんでした。 –

+0

@jozzas: 'int(" 1e-5 ")'試してみてください。 –