我希望程序能够找到列表中特定数字出现的次数。我在这做错了什么?
def list1():
numInput = input("Enter numbers separated by commas: ")
numList = numInput.split(",")
numFind = int(input("Enter a number to look for: "))
count = 0
for num in numList:
if num == numFind:
count += 1
length = len(numList)
# dividing how many times the input number was entered
# by the length of the list to find the %
fraction = count / length
print("Apeared",count,"times")
print("Constitutes",fraction,"% of this data set")
list1()
答案 0 :(得分:2)
numList
不是数字列表,而是一个字符串列表。尝试转换为整数,然后再与numFind
进行比较。
if int(num) == numFind:
或者,将numFind
保留为字符串:
numFind = input("Enter a number to look for: ")
......虽然这可能会引入一些并发症,例如如果用户输入1, 2, 3, 4
作为他们的列表(注意空格)并输入2
作为他们的号码,它会说"出现0时间"因为" 2"
和"2"
不会比较相等。
答案 1 :(得分:1)
代码有两个问题,首先您要将int
与str
进行比较,第二个是count / length
。在使用int
划分int
时,你会得到一个int
,而不是float
(正如预期的那样)。所以fraction = flost(count) / length
会对你有用,你也是需要将列表中的所有元素转换为整数,可以这样做:
numList = map(int, numInput.split(","))