如何停止函数迭代列表中的所有项



我正在用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关键字。

相关内容

  • 没有找到相关文章

最新更新