例如,让我们说
my_variable = int(input("Choose a number"))
如果我继续更改变量,是否可以计算“my_variable”具有相同值的次数?
答案 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})