我正在用python写一个简单的猜字游戏。我没有使用列表,而是将游戏的所有单词放在.txt
文件中,作为函数的参数。列表本身很好。
游戏要求用户输入一个字母。一旦输入字母,如果它与随机函数随机选择的一个单词相匹配,则相应给出分数。
问题是,当函数运行时,用户输入的字母遍历列表中的所有单词。如何解决此问题?
def guess_game(data):
word = random.choice(data)
print("alright, guess the first letter:")
ans = input("Enter a letter to guess: ")
print(ans)
counter = 0
tries = 15 #how many tries a user is allowed to make
for match in word:
if ans in match:
counter += 10
tries -= 1
print("That's right, 10 points added")
print(f"You have {tries} tries left. ")
elif ans not in match:
counter -= 10
tries -= 1
print("That's wrong, 10 points deducted")
print(f"You have {tries} tries left. ")
几个想法:
- 在您的"尝试"-玩家可以一直玩到0
- 玩家必须在这个循环中提供字母
- 检查玩家使用 提供的信件
if ans in word
我的建议是:
import random
print('Hi, welcome to the guessing game, wanna play?')
answer = input('Enter yes or no: ')
#just added a list to test
data = ['hello', 'coffee', 'tea']
word = random.choice(data)
if answer == "yes".lower():
print("OK, let's play")
print("alright, guess the first letter:")
counter = 0
tries = 15 # how many tries a user is allowed to make
while tries > 0:
ans = input("Enter a letter to guess: ")
print(ans)
if ans in word:
counter += 10
tries -= 1
print("That's right, 10 points added")
print(f"You have {tries} tries left. ")
elif ans not in word:
counter -= 10
tries -= 1
print("That's wrong, 10 points deducted")
print(f"You have {tries} tries left. ")
elif answer == "no".lower():
print("OK, have a good day")
else:
print('Please enter yes or no')
你也可以列出一个已经猜到的字母列表,这样你就可以在玩家找到所有需要的字母后立即给他们反馈。
我不确定我是否完全理解了这一点,但如果word只是一个单词,比如"苹果";或者,你的函数不应该遍历整个列表(你的列表是数据)。这个函数遍历随机单词的每个字母(如"apple"),并检查输入的字母是否等于该单词中的任何一个字母。
关键字'in'本身只检查变量在集合中的第一次出现。
但是,如果您想更具体,将输入的单词分配给一个变量,然后在迭代列表时在if语句下匹配后使用break关键字。