我希望我的代码能打印出5个wrong()
函数,而不是一行中有2个相同的文本。
我想确保如果我使用这个函数至少两次,我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()
型
5条答案
按热度按时间7lrncoxx1#
您需要跟踪它最后返回的值;您可以
但imo最好的方法是将
wrong
函数转换为generator:这样你就可以在生成器执行状态中跟踪最后一个返回值,并在下次避免它,而不必担心外部代码中的任何地方。字符串
和用法:
型
你可以继续使用生成器调用
next
,它将产生无限数量的字符串,而不会重复以前的值。zc0qhyus2#
全局变量是一个糟糕的做法。
你应该把你最后打印的值传递给
wrong
,然后在除了那个值之外的所有值中进行选择。像这样:字符串
vbopmzt13#
将前一个值存储在全局变量中,并从列表中随机选择(不包括前一个值):
字符串
5ktev3wc4#
使用random.shuffle:
字符串
tzxcd3kk5#
这里有另一个例子,可能会给你一个给予的想法:
字符串
它会记住最后选择的选项。
如果它做了一个新的选择,它会看它是否和以前的选择不一样。