我正在研究一个猜谜游戏的AI部分.我希望AI从这个列表中选择一个随机字母.我正在做它作为一个集合,所以我可以轻松删除列表中的字母,因为它们在游戏中猜到,因此不再可以再次猜到.
它说"set"对象不可索引.我该如何解决这个问题?
import random
aiTurn=True
while aiTurn == True:
allLetters = set(list('abcdefghijklmnopqrstuvwxyz'))
aiGuess=random.choice(allLetters)
print (aiGuess)
Run Code Online (Sandbox Code Playgroud) 背景
我正在尝试在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 () …Run Code Online (Sandbox Code Playgroud) 我正在开发一个简单的python游戏,其中玩家试图猜测一个单词中包含的字母.问题是,当我打印一个单词时,它会在最后打印\n.
从我最初的研究来看,我认为我需要使用r.string()来删除它.但是,我不确定它会去哪里.
对不起新手问题.
import random
with open('wordlist.txt') as wordList:
secretWord = random.sample(list(wordList), 1)
print (secretWord)
Run Code Online (Sandbox Code Playgroud) 在一个猜信游戏上工作.
为什么在下面的示例中,当我将变量的值"userGuessPosition"硬编码为2时,代码按预期工作.
secretWord = ('music')
userGuessPosition = 2
slice1 = (secretWord.__len__()) - userGuessPosition - 1
print (secretWord[slice1:userGuessPosition])
Run Code Online (Sandbox Code Playgroud)
但是当我依赖input()函数并在提示符下键入2时,没有任何反应?
secretWord = ('music')
userGuessPosition = 0
userGuessPosition == input()
slice1 = (secretWord.__len__()) - userGuessPosition - 1
print (secretWord[slice1:userGuessPosition])
Run Code Online (Sandbox Code Playgroud)
我认为这是因为我的键盘输入"2"被视为字符串而不是整数.如果是这种情况,那么我不清楚转换它的正确语法.