python中的字母/单词猜谜游戏

weixin_38073873 2019-09-12 01:18:32
背景 我正在尝试在python中编写一个基本的字母游戏.在游戏中,计算机主持人从可能的单词列表中选择一个单词.每个玩家(计算机AI和人类)都会显示一系列空白,每个字母对应一个字母.然后每个玩家猜出一个字母和一个位置,然后告诉其中一个: 那封信属于那个位置(最好的结果)那封信是在这个词中,但不在那个位置那封信不在任何剩余的空白处当单词被完全显示时,正确猜出大多数字母的玩家将赢得一个点.计算机主持人选择另一个单词并重新开始.第一个获得5分的玩家赢得了比赛.在基本游戏中,两个玩家共享他们正在填充的同一组空白,因此玩家可以从彼此的工作中受益. 题 我正在研究计算机AI部分(代码底部).我希望它从尚未猜到的字母列表中选择一个随机字母.最好的方法是什么? import random #set initial values player1points= 0 ai= 0 userCorrectLetters= '' aiCorrectLetters='' wrongPlace='' wrongLetters='' correctLetters = '' notInWord = '' endGame = False alreadyGuessed = 'a' userGuessPosition = 0 ###import wordlist, create mask with open('/Users/jamyn/Documents/workspace/Lab3/Lab3/wordlist.txt') as wordList: secretWord = random.choice(wordList.readlines()).strip() print (secretWord) mask = '_' * len(secretWord) for i in range (len(secretWord)): if secretWord[i] in correctLetters: mask = mask[:i] + secretWord[i] + mask [i+1:] for letter in mask: print (letter, end='') print () print () def addAlreadyGuessed(): alreadyGuessed= userCorrectLetters + aiCorrectLetters + wrongLetters + correctLetters def displayGame(): print ('letters are in word but not in correct location:', wrongPlace) print ('letters not in word:', notInWord) ##asks the user for a guess, assigns input to variable def getUserGuess(alreadyGuessed): while True: print ('enter your letter') userGuess = input () userGuess= userGuess.lower() if len(userGuess) != 1: print ('please enter only one letter') elif userGuess in alreadyGuessed: print ('that letter has already been guessed. try again') elif userGuess not in 'abcdefjhijklmnopqrstuvwxyz': print ('only letters are acceptable guesses. try again.') else: return userGuess def newGame(): print ('yay. that was great. do you want to play again? answer yes or no.') return input().lower().startswith('y') userTurn=True while userTurn == True: print ('which character place would you like to guess. Enter number?') userGuessPosition = int(input()) slice1 = userGuessPosition - 1 print (secretWord) ##player types in letter guess = getUserGuess(wrongLetters + correctLetters) if guess== (secretWord[slice1:userGuessPosition]): correctLetters = correctLetters + guess print ('you got it right! ') break elif guess in secretWord: userCorrectLetters = userCorrectLetters + guess correctLetters = correctLetters + guess print ('that letter is in the word, but not in that position') break else: wrongLetters = wrongLetters + guess print ('nope. that letter is not in the word') break print ('its the computers turn') aiTurn=True while aiTurn == True: aiGuess=random.choice('abcdefghijklmnopqrstuvwxyz') print (aiGuess)
...全文
329 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38103285 2019-09-12
  • 打赏
  • 举报
回复
使用pythons set,保留一个包含所有26个字母的集合,以及一组猜测的集合,并且只询问大集合中不在较大集合http://docs.python.org/2/library/sets.html中的元素…然后从该结果中随机选择 allletters = set(list('abcdefghijklmnopqrstuvwxyz')) usedletters = set() # update this as you go availletters = allletters.difference(usedletters) #s - t new set with elements in s but not in t 你可以做到很好地打印出来 print sorted(availletters) 要么 print ', '.join(sorted(availletters)) 回答关于添加猜测的后续问题,这是一个简单的例子 allletters = set(list('abcdefghijklmnopqrstuvwxyz')) usedletters = set() # update this as you go while( len(usedletters) != len(allletters) ): guessedletter = raw_input("pick a letter") availletters = allletters.difference(usedletters) usedletters.update(guessedletter) 你也可以只有一个列表并减去他们猜到的字母,例如: allletters = set(list('abcdefghijklmnopqrstuvwxyz')) while( len(usedletters) != len(allletters) ): guessedletter = raw_input("pick a letter") allletters.difference_update(guessedletter)
Frida是一款免费的,基于Python和JavaScript来实现的,面向开发人员、逆向工程师和安全研究人员的动态检测工具包。 Frida拥有一套全面的测试套件,不但调试效率极高,而且在广泛的使用经历了多年严格的测试。 尤其是,移动应用安全测试和服务巨头NowSecure对齐钟爱有加,在NowSecure内部,安全人员通过Frida这个工具套装,已经完成对大量的移动应用程序大规模深度的安全分析测试。目前依然在该公司的安全测试扮演重要的角色。 基于Python和JavaScript的Frida,天生就是跨平台的动态调试工具,不但可以运行在Windows、Linux、macOS之上,而且还可以调试Windows应用程序、Linux应用程序,macOS、iOS、Andriod和QNX等几乎全平台的应用程序。可以说,一旦掌握Frida这套工具,就可以在全平台,对全平台的应用程序进行动态调试和分析。 Frida使用极其方便,在使用过程,只需将你编写的JavaScript脚本通过Frida自身的工具注入到目标进程,就可以HOOK任何功能,其包括但不限于监视加密API或跟踪应用程序关键代码等。在使用过程,无需知道被“研究”程序的源代码。 尤其是可以一边编辑JavaScript脚本,一边运行JavaScript脚本的功能对于调试分析来说极为友好。只需“保存”正在编辑的JavaScript脚本,就立即就能看到该脚本执行的结果,全称无需其它人工介入,也无需重新启动被“研究”的应用程序,极大地简化了分析流程,同时也极大地提高了工作效率。因此,得到了众多安全分析人士的青睐。 本课程从最基本的调试环境搭建开始,基于经典的Windows“扫雷”游戏的动态调试分析,编码等,循序渐进演示Firda在分析调试Windows应用程序基本使用方法和技巧。拥有这些知识储备之后,在加上官方的参考文档,你就可以轻松地将这些知识“迁移”至分析和调试其他平台的应用程序。 课程资料,请看第一课github链接。

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧