2016-11-07 20 views
1

書き込みコードIは、以下のように正しい出力を取得しています:間違った出力Pythonプログラム

Enter number of elements 

5 
Enter numbers 

10 45 32 23 21 
Number of elements in list 5 
Valid Inputs 

5 
max index is 0 
max index is 1 
Highest input number is 45 

を時には出力は完全に間違っています:

Enter number of elements 

5 
Enter numbers 

10 45 32 6 21 
Number of elements in list 5 
Valid Inputs 
5 
max index is 0 
max index is 1 
max index is 3 
Highest input number is 6 

誰かがこのコードを修正するのに手伝ってください。

+0

コードをインデントしてください(例:Alt + Kなど)。 –

+0

'input'は予約語で、コードはブロックされていることに気づいていますか? – boardrider

答えて

1

あなたがしたいことは、max関数を使用することです。数値の配列に対してmaxを呼び出すと、最大の数値が返されます。

num_array = [5, 3, 6, 12, 3, 5] 
largest = max(num_array) 
print("Max num: {}".format(largest)) 
0

コードでint関数を使用する必要があります。

int(numbers[x]) >= int(numbers[max_index1])) 

あなたは、Pythonは比較するべきではない場合は番号[x]は、文字列と数字[max_index1]辞書のために

、 "45" は、あなたのリストの中

+0

確かにこれを試してみましょうが、ここでの型キャスティングはどのように役立ちますか? – sudip

+0

int型キャストは文字列を整数にします。たとえば、int( "45")は整数45になりました。int型キャストを使用しない場合は、 "45"と "6"を比較するだけです。したがって、ASCIIコードでは「4」が「6」よりも小さいので、あなたの答えは間違っています。私は整数を比較したいと思う。 – Bakyuns

0

項目 "6" の背後にあります文字列があるので、彼らは辞書的にを命じられている:

>>> '6' > '45' 
True 
>>> 6 > 45 
False 

あなたは、リスト内の項目を変換する必要がありNUMを行うには整数型に置換することによってerical順序:

input = sys.stdin.read() 
numbers = input.split() 

で:組み込みinput関数を使用してアイテムを読み取る

numbers = [int(i) for i in input().strip().split()] # use 'raw_input' for Python 2 

ストリップ先頭と末尾の空白、分割文字列リストと変換にリスト内の各項目は、リストの理解を使用して整数に変換されます。名前としてinputを使用すると、あなたはおそらくsys.stdin.readの代わりに使用する必要があり、それ組み込みinput機能としては良い考えではないことを

注意。

0

現在、リストnumbersは文字列のリストです。これを表示するには、番号を印刷できます。

のpython 2.7で
>>> print(numbers) 
['10', '42', '32', '6', '21'] 

、文字列がこの問題を回避するには(おそらく)驚くべき結果

>>> '6' > '42' 
True 

と別の文字列と比較することができ、あなたは整数のリストであることを番号を変更することができます

>>> numbers = map(int, numbers) 
>>> print(numbers) 
[10, 42, 32, 6, 21] 

ここで、mapでは、数値の各要素に関数を適用して結果を返すことができます。