我的初始代码是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
问题
为什么我收到这两个错误?
如何在程序中成功实现此功能?这样用户就可以收到有关他们输入的值是否包含重复值的反馈?
答案 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