在Python中从用户输入中查找重复值

时间:2015-02-06 20:38:32

标签: python

我的初始代码是Python 2.7.8中的基本计算器,但我现在决定要包含一个用户可以输入多个值的函数。

一旦进入此功能,该功能可以使用用户刚刚输入的值存储到变量(函数参数)中,然后告诉他们是否输入了重复值。现在,这些值会以逗号分割并插入到列表和功能运行。

我创建了一个函数,它已经将变量等于'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. 如何在程序中成功实现此功能?这样用户就可以收到有关他们输入的值是否包含重复值的反馈?

1 个答案:

答案 0 :(得分: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