This question是关于编写hangman解算器的。我想写一个主要的“游戏”程序,输出下划线,并采用单个字母作为输入;另一个程序,“求解器”,将下划线作为输入并输出字母。
我以前不知道如何做到这一点。我尝试了here和here所描述的方法,但仍然没有运气。
我在python中的示例游戏程序如下:
import sys
s="HANGMAN"
s2=[]
for i in s:
s2.append('_')
err=0
print ''.join(s2)
sys.stderr.write('debug _______\n')
while err<6 and '_' in s2:
c=raw_input()
nomatch=True
for i in range(0, len(s)):
if s[i]==c:
s2[i]=c
nomatch=False
if nomatch:
err+=1
print ''.join(s2)
我的样本求解程序如下:
import sys
raw_input()
sys.stderr.write('debug H\n')
print 'H'
raw_input()
print 'A'
raw_input()
print 'N'
raw_input()
print 'G'
raw_input()
print 'M'
raw_input()
然后在我的终端中我尝试了以下内容:
mkfifo fifo
python game.py <fifo | python solver.py >fifo
和
coproc python game.py
python solver.py <&${COPROC[0]} >&${COPROC[1]}
和
{ python game.py | python solver.py; } >/dev/fd/0
所有这些只提供来自game.py的第一个调试消息,然后看起来两个程序都在等待输入。我做错了什么以及如何解决这个问题?
答案 0 :(得分:0)
我设法使用mkfifo fifo
方法通过在每个sys.stdout.flush()
语句后添加print
来解决此问题。