若单词和字符串变量名相同,则将其从列表中删除



我想让用户写一个水果的名字,然后我想从我的列表中打印出另一种水果的名字。然而,我不想打印出与用户输入的水果名称相同的水果名称。我在下面写了代码,并使用了一个while循环,只要"botAnswer"one_answers"user_word"匹配,就会运行该循环,但代码似乎没有像我预期的那样工作。

user_word = input()
word_list = ["apple", "banana", "plum", "peach"]
n = 0
while n < 1:
botAnswer = random.choice(word_list)
if botAnswer == user_word:
n = 0
else:
n = 1

您可以从word_list中获得两个不同的元素,如果使用random.choices():获取第一个元素,则使用第二个元素

def my_func():
user_word = input('?: ')
word_list = ["apple", "banana", "plum", "peach"]
possible = random.choices(word_list, k=2)
bot_answer = possible[0] if (possible[0] != user_word) else possible[1]
print(f"Chosen word is {bot_answer}.n")

操作示例,使用random.seed()确保调用之间的随机结果相同:

>>> random.seed(3)
>>> my_func()
?: banana
Chosen word is apple.
>>> random.seed(3)
>>> my_func()
?: apple
Chosen word is plum.
>>> random.seed(3)
>>> my_func()
?: plum
Chosen word is apple.

一个相当清晰的解决方案是使用列表理解过滤掉与输入字符串等效的选项。

user_word = input()
word_list = ["apple", "banana", "plum", "peach"]
bot_answer = random.choice([word for word in word_list if word != user_word])

最新更新