小编Jer*_*ome的帖子

python + curses中窗口的最后一个字符

以下程序引发错误:

import curses

def test(scr):
  top = curses.newwin(1, 10, 0, 0)
  top.addstr(0, 9, "X")

curses.wrapper(test)
Run Code Online (Sandbox Code Playgroud)

看起来每当我尝试使用addstr()在窗口的最后一行的最后一列中写入一个字符时(即使它小于屏幕),它会引发错误.我不想滚动,我不关心光标的位置.我想要的只是能够在窗口的每个位置写字符.有可能吗?我怎样才能做到这一点?

python ncurses

11
推荐指数
2
解决办法
1237
查看次数

如何将属性附加到术语?

我想从一组约50种不同的属性中将属性附加到我的术语中.通常只有一小部分用于给定的术语.有很多方法可以表示这些属性,但我对它们中的任何一个都不满意.

为了便于讨论,这里有一组属性及其可能的值:

hair: bald, blonde, brune, red
eyes: blue, green, brown
first_name: John, Dick, Harry
Run Code Online (Sandbox Code Playgroud)

有许多方法可以表示这些属性,例如使用对列表:

[eyes-blue, hair-blonde]
Run Code Online (Sandbox Code Playgroud)

似乎唯一有效的表示是使用一个非常长的列表,其中每个索引用于特定属性:

?- T1=[blonde,_,_], T2=[_,blue,_], T1=T2.
T1 = T2, T2 = [blonde, blue, _1266]

?- T1=[X,_,_], X=blue.
T1 = [blue, _1230, _1236],
X = blue
Run Code Online (Sandbox Code Playgroud)

但它有50个属性是不可读的,并且非常错误(在我的情况下,一整套谓词专用于每个属性,有时属于属性的每个值).

我使用这种功能的方式是使条件如"条款T1和T2具有相同的属性X值",或"条款T1和T2相同",其中T1和T2具有可在其他地方设置的属性,或者可以不设置.

使用dicts不起作用,因为未设置的密钥被认为是不存在的:

?- T1 = _{eyes:blue, hair:blonde}, T2 = _{eyes:blue}, T1 = T2.
false.
Run Code Online (Sandbox Code Playgroud)

为了实现这一点,我需要使用带有自由变量的50个(大多数是不相关的)属性来初始化每个术语,并且有可能会使用其中一些.

我还有其他选择吗?如果有更接近我的需求而不是prolog,我愿意使用不同的逻辑编程语言.

prolog

2
推荐指数
1
解决办法
148
查看次数

标签 统计

ncurses ×1

prolog ×1

python ×1