我正在编写一个Python程序,它将执行the power triangle的计算,并且需要一些帮助来确定我选择公式的方法是否最有效。你知道吗
如果你不熟悉,这只是余弦定律的应用。在五个可能的输入中,我只需要两个,并且可以计算其他的。我还实现了matplotlib来可视化输出,但是现在,我只想运行数学。你知道吗
我用tkinter来获取输入,用字典来存储输入。你知道吗
fields = 'kW', 'kVA', 'kVAR', 'PF', 'Theta'
calcInputs = {}
def fetch(entries):
for entry in entries:
field = entry[0]
text = entry[1].get() # User input for each textbox
print('%s: %s' % (field, text)) # Print to stdout with name
if len(text) == 0:
pass # Don't update dictionary with nulls
else:
calcInputs.update({field:text}) # name : value updated to dictionary
稍后,我将每个字典条目存储为一个变量,稍后将其转换为一个float。你知道吗
kW = calcInputs.get('kW')
kVA = calcInputs.get('kVA')
kVAR = calcInputs.get('kVAR')
pF = calcInputs.get('PF')
theta = calcInputs.get('Theta')
这是一个占位符,让我知道哪些是空的:
for i in calcInputs:
if i is not None:
print({i})
else:
pass
我是否为每个none组合创建一个函数,并根据我拥有的数据调用相应的函数?这似乎是最直截了当的,但我觉得一定有更好的办法。你知道吗
让我们先让你的一些代码更“Pythonic”。你写道:
这个问题是
calcInputs
将是持久的—也就是说,它将一直保持到下一个周期(假设有多个周期),因此可能会将数据从一个时间保留到下一个时间。让我们初始化函数中的空字典,这样我们就可以从头开始了。(注意:如果输入框保持其值在一个周期到另一个周期之间,这对我来说没关系-用户可以看到它,如果她想的话可以清理它。)下一步看起来还可以,尽管我不熟悉Python下的TkInter:
这显然是调试代码-保持它,直到你高兴。你知道吗
下一部分是“完全错误的”,看起来你来自Java,Java是一种很好的语言。但是由于"truthiness"和语法糖,我们可以做得更干净一些。在Python中,如果字符串不是空的,则为“true”,并且可以使用
dict[key]
表示法对字典进行索引:就这样。但是,既然我们没有使用全局变量,那么让我们继续返回结果:
现在可以调用fetch并使用结果。或者,如果愿意,可以将结果重新分配给全局:
一旦你有了输入,就去处理它们。你有一个问题,你实际上不知道你得到了哪些输入。一种简单的方法就是一系列包含两个值的if/then语句,我们可以通过定义一些常量来简化这些语句(这样就不必一直键入引号):
Python的
in
操作符将字典和集合用作键或成员身份测试,将字符串用作子字符串搜索,并将列表用作线性扫描。你知道吗这种方法是@Alden描述的二进制样式的序列,所有的东西都被拼出来了。你知道吗
另一种方法是创建一个对给定参数进行编码的可哈希对象,并使用字典来分派它们:
注意:
for...else
是一种有效的Python形式。当for循环耗尽其iterable时,它运行else
子句。因此,它是非常适合于一个块在中间休息语句。你知道吗您可以使用一个简单的二进制映射来查看您的输入是什么,并应用适当的函数。举个例子:
相关问题 更多 >
编程相关推荐