因此,基本上我正在尝试使用Python构建计算器。我知道这可能不是最佳选择,但是我喜欢Python,并且想挑战。我目前正在尝试找出一种使“无限”数量的数字和运算符成为可能的方法,因此,我想知道是否有可能例如在变量n
之后添加一个数字,使{{1 }},n1
,n2
以及运算符n3
之后的数字使op
,op1
,op2
等
如果有更好的方法可以做到这一点,那就太好了,因为在使用Python时我还是比较陌生。
答案 0 :(得分:1)
如果有更好的方法可以做到这一点,那是很棒的,因为在使用python时我还相对较新。
是的。清单。或字典,但可能列出。可能是universal_print
(双端队列),具体取决于您要使用它的方式(从常规deque
的开头添加或删除项目效率很低,尤其是列表的大小增加)。想要动态创建变量名是一个巨大的危险信号。
我目前正试图找出一个“无限”的量
查找迭代器和生成器以及itertools。这些是懒惰地构建和组成无限序列的工具。
尽管我不太清楚为什么要使用计算器,除非您想生成数据流和操作流以进行测试?在这种情况下,我建议您在hypothesis游荡。
答案 1 :(得分:1)
所以我想知道是否有可能在变量n之后添加一个数字,使其分别为n1,n2,n3,并在运算符op之后添加一个数字,从而使op1,op2,op3等。
通过将globals()
返回的全局变量插入字典,您实际上可以创建全局变量,从而允许对名称使用字符串处理:
globals_dict = globals()
for i in range(50):
# As an example, let's put i squared into variable n{i},
# i.e., 0 squared (= 0) into n0, 1 squared (= 1) into n1,
# 2 squared (= 4) into n2, etc.
globals_dict[f"n{i}"] = i**2
assert n11 == 121 # Check that n11 is actually 11 squared, i.e., 121.
在Python的某些实现中,这甚至适用于locals()
返回的局部变量字典以创建局部变量,但与globals()
相比,行为是未指定的,因此不应依赖。
要使用这些变量而不用硬编码它们的名称,就必须再次访问globals()
或globals_dict
,这是完全不切实际的。
有一种将多种值放入单个变量的pythonic方法(即Python中的惯用语):集合类型。该语言内置了最通用(因此也是最常用)的值。本身:
standard library module collections
中提供了更多集合类型。
如果您不确定如何使用内置集合,请仔细阅读Python tutorial in the official Python documentation。