2016-06-21 7 views
-2

私は以下のコードを書いてpythonで実行しようとしましたが、私は= 56 b = 67として入力を与えればうまく動作しますが、 789、B = 45566 -Pythonでif条件の2つのintegeres buの使用を比較する

以下

A = 789、B = 45566が入力された場合、コード

def max(a,b): 
    if a>b: 
     print(a+" is greater than "+b) 

    else: 
     print(b +" is greater than "+ a) 

o1 = raw_input("Enter value of A ") 
o2 = raw_input("Enter value of B ") 

to = max(o1,o2) 

書き込ま出力されている - の値を入力B 45566の値を入力してください 789は45566より大きく

+6

の入力のためであるのに対し、raw_inputは、文字列型の入力用ですので

o1 = input("Enter your first number : ") 

。 – syntonym

+1

'to = max(o1、o2)'を 'to = max(int(o1)、int(o2))'に変更します。 – MicroPyramid

+0

'type'を使って変数の型をチェックすることを習慣にします。 – hashcode55

答えて

0

変更

to = max(o1,o2) 

to = max(int(o1), int(o2)) 
2

にあなたは文字列を比較しています。 maxを呼び出すときは、関数intを使用して整数にキャストしてください。そのように:max(int(o1), int(o2))

2

あなたは整数ではなく文字列を比較しています。それらを整数にキャストすると、結果が得られます

1

問題は、raw_inputから文字列を読み込み、比較が辞書的なものであることです。だから '7'> '4'の結果、 '789'が '45566'より大きいという結果が得られます。

は、いくつかの洞察を得るために、このコードを見てください:

def max(a,b): 
    if a>b: 
     print(str(a) + " is greater than " + str(b)) 

    else: 
     print(str(b) +" is greater than "+ str(a)) 

o1 = raw_input("Enter value of A ") 
o2 = raw_input("Enter value of B ") 
print type(o1) 
print type(o2) 
to = max(o1,o2) 
o3 = int(o1) 
o4 = int(o2) 
print type(o3) 
print type(o4) 
to = max(o3, o4) 

これが出力されます。

Enter value of A 789 
Enter value of B 45566 
<type 'str'> 
<type 'str'> 
789 is greater than 45566 
<type 'int'> 
<type 'int'> 
45566 is greater than 789 

はまた、最大()はPythonで、呼び出された関数を定義することにより、組み込みですmax()はアクセス不可能にしています。

-1

あなたの入力は、あなたが使用する必要が整数になりたい場合は、次の入力が文字列を与えるraw_input整数型

+0

python2では、 'input'は整数だけでなく、Pythonの文や式を受け入れるためのものです。 'foo = input()'を実行し、 '5 == 4'や' dict() 'のようなものを入力すれば動作します。 python3では、 'input'はpython2の' raw_input'の行に沿って動作します –

関連する問題