2015-02-06 80 views
-1

我的初始代碼是Python 2.7.8中的一個基本計算器,但是現在我已經決定了我想包含一個函數,用戶可以輸入多個值。在Python中查找用戶輸入的重複值

一旦輸入了這個函數,函數就可以運行用戶剛剛輸入的值存儲到一個變量(函數參數)中,然後獲知它們是否輸入了重複值。現在,這些值在逗號分隔並插入進入一個列表並且函數運行。

我已經創建了一個函數,該函數已經將變量等同於用戶鍵入算法時發生的'AlgorithmListEntry'的用戶輸入。

def findDuplicates(AlgorithmListEntry): 
       for i in len(range(AlgorithmListEntry)): 
        for j in len(1,range(AlgorithmListEntry)): 
         if AlgorithmListEntry[i]==AlgorithmListEntry[j]: 
          return True 
       return False 

凡函數查找參數以及範圍,但是這並沒有因爲另一個錯誤的工作

for i in len(range(AlgorithmListEntry)): 
TypeError: range() integer end argument expected, got list. 

我現在收到錯誤

for i in len(AlgorithmListEntry):TypeError: 'int' object is not iterable 

爲了便於查看我只插入了與我的問題相關的部分代碼

i = True #starts outer while loop 
j = True #inner scientific calculations loop 

def findDuplicates(AlgorithmListEntry): 
      for i in len(AlgorithmListEntry): 
       for j in len(1(AlgorithmListEntry)): 
        if AlgorithmListEntry[i]==AlgorithmListEntry[j]: 
         return True 
      return False 


while i==True: 
    UserInput=raw_input('Please enter the action you want to do: add/sub or Type algorithm for something special: ') 
    scienceCalc=('Or type other to see scientific calculations') 

    if UserInput=='algorithm': 
     listEntry=raw_input('Please enter numbers to go in a list:').split(",") 
     AlgorithmListEntry = list(listEntry) 
     print AlgorithmListEntry 
     print "The program will now try to find duplicate values within the values given" 

     findDuplicates(AlgorithmListEntry) 
    #i = False 

問題

  1. 爲什麼我收到這兩種錯誤的?

  2. 怎樣才能在我的程序中成功實現這個功能?這樣用戶可以收到關於他們輸入的值是否包含重複值的反饋?

+2

Doh,你真的需要清理你的代碼,關於PEP8,希望很多人都願意通讀。嚴重的是,在你的縮進上工作,並且在'AlgorithmListEntry = list(listEntry)'中綁定列表的名字是可怕的:-)。 – 2015-02-06 20:40:50

回答

1

你做len(range(foo))代替range(len(foo))

range看起來是這樣的:

range(end)    --> [0, 1, 2, ..., end-1] 
range(start, end)  --> [start, start+1, ..., end-1] 
range(start, end, step) --> [start, start+step, start+step*2, ..., end-1] 

len給出了一個序列的長度,所以len([1,2,3,4,5])5

len(range([1,2,3]))中斷,因爲range不能接受列表作爲參數。

len([1,2,3])中斷,因爲它返回列表的長度作爲整數,這是不可迭代的。這使得您的線路是這樣的:

for i in 3: # TypeError! 

相反,你想使一個範圍內儘可能多的數字,因爲在AlgorithmListEntry元素。

for i in range(len(AlgorithListEntry)): 
    # do stuff 
+0

非常感謝你的工作和解決我的兩個問題! – surjudpphu 2015-02-06 20:42:48