在这种情况下,我有一个代码可以从名称列表中确定幸存者以走木板,列表中的最后一个人幸存下来,我为此拥有的代码是:
names = ["Andrew", "Brenda", "Craig", "Deidre", "Edward", "Felicity", "Greg", "Harriet"]
def survivor(names, step):
Next = step - 1
while len(names) > 1:
names.pop(Next)
Next = Next + step
Next = (Next - 1) % len(names)
print names
return names[0]
这可以根据步骤中的内容返回幸存者,但我还需要为一个人的生存计算出最小的 N 步,例如 3 用于 greg 和 2 用于 Andrew。
我为此尝试过的代码是:
assert name in names
for step in survivor(names, step):
if survivor == name:
return step
但它一直说未定义分配或全局步骤之前引用的局部变量步骤。
和
assert name in names
for step in itertools.count(1):
if survivor(names, step) == name:
return step
但这会返回
[“布伦达”、“克雷格”、“迪德”、“爱德华”、“费利西蒂”、“格雷格”、“哈里特”]
['Craig'、'Deidre'、'Edward'、'Felicity'、'Greg'、'Harriet']
['Deidre'、'Edward'、'Felicity'、'Greg'、'Harriet']
['爱德华','费利西蒂','格雷格','哈里特']
['幸福','格雷格','哈里特']
['格雷格','哈里特']
['哈里特']
这不是我想要的
谁能帮我解决这个问题?