gpt4 book ai didi

python |避免从列表中随机选择先前的值

转载 作者:行者123 更新时间:2023-11-30 23:12:29 24 4
gpt4 key购买 nike

基本上,我希望我的代码做的是打印出 5 个 wrong() 函数,而不是连续 2 个相同的文本。当然,我不希望这一切都靠运气。 :)

虽然不用担心它的一部分会打印出 5 个 wrong(),但我只是想确保我是否至少使用此函数两次,我 100% 确定之前的值不会与下一个相同。

例如,我想避免什么:

Wrong!
Wrong!

虽然这仍然没问题:

Wrong!
Incorrect!
Wrong!

我的代码:

import random

def wrong():
wrong_stats=["\n Wrong!","\n Tough Luck!","\n Better Luck Next Time!","\n Not there yet!","\n Incorrect!"]
rand = random.choice(wrong_stats)
rand3 = random.choice(wrong_stats)
norep(rand,rand3,wrong_stats)

def norep(rand,rand3,wrong_stats):
if rand == rand3:
same = True
while same:
rand = random.choice(wrong_stats)
if rand != rand3:
print(rand)
break

elif rand != rand3:
print(rand)

wrong()
wrong()
wrong()
wrong()
wrong()

最佳答案

您需要跟踪它返回的最后一个值;你可以

  • 为此使用一个全局模块(实际上通常很困惑)
  • 或者将其变成一个类(有点冗长)
  • 或者在外部进行跟踪并每次将其传入(笨重且乏味)

但在我看来,最好的方法是将你的错误函数变成 generator相反:这样您就可以跟踪生成器执行状态中的最后一个返回值,并在下次避免它,而不必在任何地方的外部代码中担心这一点。

def wrong():
wrong_stats = ["Wrong!","Tough Luck!","Better Luck Next Time!","Not there yet!","Incorrect!"]
previous_value = None
while True:
value = random.choice(wrong_stats)
if value != previous_value:
yield value
previous_value = value

及用法:

w = wrong()
for i in range(5):
print(next(w))

# Tough Luck!
# Incorrect!
# Not there yet!
# Tough Luck!
# Better Luck Next Time!

您可以继续使用生成器调用 next ,它将生成无限数量的字符串,而不会重复以前的值。

关于 python |避免从列表中随机选择先前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29805042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com