如何检查变量保持相同值的次数

时间:2017-01-24 16:16:26

标签: python count

例如,让我们说

my_variable = int(input("Choose a number"))

如果我继续更改变量,是否可以计算“my_variable”具有相同值的次数?

3 个答案:

答案 0 :(得分:1)

如果多次运行程序,唯一的方法是让程序记下输入文件的内容。如果这在循环中继续变得更容易,只需创建一个列表,您追加my_variable并在该列表上调用collections.Counter

答案 1 :(得分:0)

Python没有提供跟踪全局变量更改的方法,因此我将其置于循环中并保留变量所采用的所有先前值的列表,如下所示:

values = []
while True:
    my_variable = int(input("Choose a number"))
    values.append(my_variable)

显然,您需要为其添加一些条件以了解何时突破循环,但您现在可以轻松计算特定值在values列表中显示的次数。正如其他答案所说的那样,使用计数器将是一个好主意。如果你想直接去柜台,而不是每次想要获得计数时都要拨打Counter(list),你可以这样做:

from collections import Counter
values = Counter()
while True:
    my_variable = int(input("Choose a number"))
    values[my_variable] += 1

以下是一个程序示例,它会一直提示用户输入数字,直到输入一些数字为止:

from collections import Counter
counts = Counter()
while True:
    my_variable = int(input("Choose a number"))
    counts[my_variable] += 1
    num, count = counts.most_common(1)[0]
    if count == 3:
        break
# Figure out what number was input 3 times:
num, count = counts.most_common(1)[0]
print(num)

See here有关collections.Counter的文档,包括对Counter.most_common方法的解释

答案 2 :(得分:0)

无法计算简单变量的先前值。但是可以创建一个跟踪分配并计算它们的属性。

from collections import Counter

class MyClass(object):
    def __init__(self):
        self.x_values = Counter()
        self._x = None

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, x):
        self._x = x
        self.x_values[x] += 1


c = MyClass()
c.x = 1
c.x = 2
c.x = 3
c.x = 3
c.x = 2
c.x = 1
c.x = 1

print(c.x_values)
# prints Counter({1: 3, 2: 2, 3: 2})