2014-11-09 37 views
0

基本上我所要做的是獲取列表以不同的方式進行排序和顯示。但似乎在我做第一次打印後,它會得到「TypeError:'int'對象不可調用」。我假設這是因爲我在列表的末尾,需要在開始時重新啓動?不知道該怎麼做,或者如果這就是原因。Python - 如何排序通過我的列表

##vars 

Index = 0 
NumSize = 0 
NumInput = 0 
ManNum = 0 

##Asking for list size 

NumSize = int(input("How many numbers would you like to enter?:\n====>")) 

##Declaring list 

Numbers = [0] * NumSize 

##Collecting data 

for Index in range(NumSize): 
    NumInput = int(input("Please enter a number:\n====>")) 
    Numbers[Index] = NumInput 

##Getting highest number 

MaxNum = max(Numbers) 

##Printing list 

print("::::The numbers you entered were::::") 
for Numbers in Numbers: 
    print(Numbers) 

##Sorting list small to large 

Numbers.sort() 
print("::::The numbers while sorted::::") 
for Numbers in Numbers: 
    print(Numbers) 

##Sorting list large to small 

Numbers.reverse() 
print("::::The numbers reversed::::") 
for Numbers in Numbers: 
    print(Numbers) 

##Printing largest number 

print("::::Largest number::::\n", 
     MaxNum) 
+2

你的代碼看起來像java,認真對待PEP8。 – simonzack 2014-11-09 07:51:28

回答

5

您使用

for Numbers in Numbers: 
    print(Numbers) 

你不應該爲您的迭代變量相同的名稱作爲您的收藏

試試這個

for number in Numbers: 
    print(number) 
+0

工作得很好!謝謝你和其他人迴應:) – Ryousha88 2014-11-09 16:20:46

2

不叫迭代器具有相同名稱作爲集合,當你覆蓋後面的

for Numbers in Numbers: 

這將破壞「Numbers」數組,並且循環後的「Numbers」是「Numbers」的最後一個元素。更改所有迴路

for number in Numbers: 
0

使用任何代替你for循環Numbers, 使

for i in Numbers:` 
    dosomething 

如果打印號碼,然後你會看到,它只是進行最後一個數字在列表中插入。

print Numbers 
>>> #last Number of List   
0

在循環中使用與Numbers不同的變量。您還可以使用sorted(Numbers)reversed(Numbers)來減少您必須執行的變量分配的數量。如果您不打算重複使用MaxNum,則可以直接在print中執行此操作。

這裏是完全更新程序:

##vars 
Index = 0 
NumSize = 0 
NumInput = 0 

##Asking for list size 
NumSize = int(input("How many numbers would you like to enter?:\n====>")) 

##Declaring list 
Numbers = [0] * NumSize 

##Collecting data 
for Index in range(NumSize): 
    NumInput = int(input("Please enter a number:\n====>")) 
    Numbers[Index] = NumInput 

##Printing list 
print("::::The numbers you entered were::::") 
for number in Numbers: 
    print(number) 

##Sorting list small to large 
print("::::The numbers while sorted::::") 
for number in sorted(Numbers): 
    print(number) 

##Sorting list large to small 
print("::::The numbers reversed::::") 
for number in reversed(Numbers): 
    print(number) 

##Printing largest number 
print("::::Largest number::::") 
print max(Numbers) 
-1

,答案已經在上面給出。但出於解釋的目的,這裏出了什麼問題。

>>> Numbers = [1, 4 , 10, 8] #This is creating a list. 
>>> for Numbers in Numbers:  #Now when you are iterating it definately gives the result 
...  print(Numbers) 
... 
1 
4 
10 
8 
>>> Numbers      #But now check what is in Numbers 
8 
>>> 

你不想要上述。

注:>>>是Python解釋器提示

正如在評論中提及,請在開始Python的方式編寫代碼。 這是:

  1. 你不需要像你那樣初始化變量。你只需要在使用它們之前分配它們。
  2. 當你要求輸入。你需要去做list[index]而不是你可以使用append方法。