【发布时间】:2021-07-06 11:01:10
【问题描述】:
我是一个完全的业余爱好者,并且知道可能有更简单的方法可以做到这一点,但这不是一个重要的项目,只是一个超级快速的代码。由于某种原因,它似乎陷入了循环,因为 random.choice 一遍又一遍地给出相同的数字。它有时会起作用,我只需要尝试几次,随着范围的增加,难度就越大。
代码应该为每一轮的每个“玩家”分配一个唯一的号码,而不是两次给同一个玩家相同的号码。
import random
A = []
B = []
C = []
D = []
E = []
F = []
G = []
H = []
I = []
J = []
K = []
lt = [A, B, C, D, E, F, G, H, I, J, K]
lit = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K']
ALT = 0
for e in range(5):
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
for i in lt:
while True:
add = random.choice(lst)
if add not in i:
i.append(add)
lst.remove(add)
break
else:
print('fant ingenting')
ALT += 1
print(ALT)
tot = 0
for k in lt:
print(str(lit[tot]) + ' = ' + str(k))
tot += 1
【问题讨论】:
-
如何改变逻辑,这样你就有一个循环的外循环和一个内循环的玩家来分配该回合的数字。对于每个玩家,您列出之前未分配给该玩家或在本轮中使用的所有号码,然后从该玩家在本轮中列出的随机选项中分配一个。