类似于a previously asked question,我正在尝试创建一个数值函数来计算斜率。正如上述链接的答案所表明的,并且我发现,我最终得到的Arity为3,斜率/ 3看起来像这样:
import wx
import ctypes
try:
ctypes.windll.shcore.SetProcessDpiAwareness(True)
except:
pass
class WindowClass(wx.Frame):
def __init__(self, *args, **kwargs):
super(WindowClass,self).__init__(*args, **kwargs)
self.basicGUI()
#GUI elements
def basicGUI(self):
panel = wx.Panel(self)
menu_bar = wx.MenuBar()
box_sizer = wx.BoxSizer()
box_sizer.Add(panel, 1, wx.ALL|wx.EXPAND)
button_text = wx.StaticText(panel, label="Select a .cpf file")
self.file_button = wx.FilePickerCtrl(panel)
check_button = wx.Button(panel, label='Check')
self.Bind(wx.EVT_BUTTON, self.OnCheckButton, check_button)
a_text = wx.StaticText(panel, label="a file status")
b_text = wx.StaticText(panel, label="b file status")
c_text = wx.StaticText(panel, label="c file status")
passed_text = wx.StaticText(panel, label="passed")
#set items on the grid
sizer = wx.GridBagSizer(5, 5)
sizer.Add(button_text, (0, 0))
sizer.Add(self.file_button, (0, 2))
sizer.Add(check_button,(1, 2))
sizer.Add(a_text, (2, 0))
sizer.Add(b_text, (3, 0))
sizer.Add(c_text, (4, 0))
sizer.Add(passed_text, (2, 1))
#make border
border = wx.BoxSizer()
border.Add(sizer, 1, wx.ALL|wx.EXPAND, 5)
#use sizers
panel.SetSizerAndFit(border)
self.SetSizerAndFit(box_sizer)
#show GUI
self.SetTitle('file check')
self.Centre()
self.Show(True)
# indentations are very important in Python
def OnCheckButton(self, event):
print("perform check") #debug line
print(self.file_button.GetPath())
app = wx.App()
WindowClass(None)
print("passed")
app.MainLoop()
我的下一个问题是:如何使用? def all_sum(number):
total = 0
if number > 0:
for e in str(number):
if e.isdigit():
total += int(e)
else:
pass
return total
a = all_sum(567897)
最终将包含slope((Xa, Ya), (Xb, Yb), S) :-
S is div((Yb - Ya), (Xb - Xa)).
或S
,但作为序言新手,我看不到如何在规则中使用它。
1
还是其他?
答案 0 :(得分:3)
您的谓词:
answer((Xa, Ya), (Xb, Yb)) :-
slope((Xa, Ya), (Xb, Yb), 1),
slope((Xa, Ya), (Xb, Yb), -1).
说(Xa, Ya)
和(Yb, Yb)
之间的斜率应为1
; (Xa, Ya)
和(Yb, Yb)
之间的和斜率应为-1
。除非斜率可以具有两个值,否则不会发生。
此外,我并不认为在这里使用坡度是个好主意。如果Xb-Xa
为零,则由于除以零,将导致评估错误。
假设1
和-1
之差的绝对值与绝对值相同,则可以说两个值的斜率是Yb
或Ya
Xb
和Ya
之间的差异。
我们可以这样表达:
answer((Xa, Ya), (Xb, Yb)) :-
abs(Xa - Xb) =:= abs(Ya - Yb).