从python脚本中重新运行脚本的命令

时间:2014-07-11 11:28:33

标签: python

还在处理我的刽子手游戏!我想定义一个重新运行整个python脚本的函数 - 即重置要猜测的单词,空格的数量,猜到的字母和刽子手图 - 如果是'是&#39 ;被称为它的论点。我尝试过使用内置的execfile()函数,但如果新单词与前一个单词的长度不同,则只会添加空格或删除字母:

In [17]: attempt(word, 'r')
u n d e r  

a b c - - f g h i j k - m - o p q - s t - v w x y z
  _________
 ||       |
 ||
 ||       
 ||
 ||
 ||
 ||_________

Congratulations! You guessed the correct word!

Would you like to play again?

是上一场比赛的结果,也是我写的时候

In [18]: play_again('yes')

In [19]: word = ['a','c','e']

In [20]: guess(word)
>>>       _________
         ||       |
         ||
         ||       
         ||
         ||
         ||
         ||_________

In [21]: attempt(word, 'a')

我得到了

a n d  

- b c - - f g h i j k - m - o p q - s t - v w x y z
  _________
 ||       |
 ||       0
 ||     /( )\
 ||
 ||
 ||
 ||_________

表明,虽然guess()函数在再次播放后似乎重置正常,但其余代码与要猜测的单词长度保持不变。从我记忆中来看,subprocess()函数也有类似的效果/不起作用。有没有一种简单的方法来重新运行整个脚本,以便它全部重置?

不知道是否需要整个脚本来为我提供答案(而且我不知道我是否愚蠢到不包括它),所以如果你需要这一切我都会编辑这篇文章,但是我想通过不包括所有内容并暂时包含play_again函数来保持它尽可能短。希望这一切都清楚!

play_again函数:

def play_again(decision=''):
if decision == 'yes':
    execfile("C:\Users\Joel\Documents\Year 1\Labs\Computing\Learning\hangmanglobal.py")
if decision == 'no':
    print "Thank you for playing Hangman!"

1 个答案:

答案 0 :(得分:0)

你应该用一个while循环解决这个问题,一旦用户想要停止,它就会中断。使用execfile这是相当尴尬的,如果你移动脚本将会中断。

的伪代码:

while True:
    # initialize variables
    # redraw your graphics
    # play the game
    # ask user if he wants to play another game
    if not play_again:
        break

print('Thanks for playing, bye')

最好为上面列出的步骤调用函数,以便没有巨大的while循环。