还在处理我的刽子手游戏!我想定义一个重新运行整个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!"
答案 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
循环。