如何使用第三个列表将列表链接到另一个列表?,有时有效,但发生这种情况时会出错

Posted

技术标签:

【中文标题】如何使用第三个列表将列表链接到另一个列表?,有时有效,但发生这种情况时会出错【英文标题】:how can I link a list to another list using a third one?, works sometimes but bugs when this happens 【发布时间】:2022-01-24 04:58:04 【问题描述】:

我正在开展一个小型个人项目,将 d&d 故事变成游戏。 当故事到达一个点时我遇到了一个问题,一只羊跑向具有最高魔法的角色,并且由于我在会话开始时随机生成魔法,有时两个角色可以具有相同的魔法值,所以我把它给具有最高魔力的角色之间具有最高魅力的角色..由于我是初学者,因此我尝试使用列表来解决此问题,非常感谢使用字典的解决方案,但这不是我的问题,我想出了一个解决方案对我的菜鸟来说似乎是合乎逻辑的,但如果多个角色具有相同的魅力(无论魔法值如何),代码就会失败并随机选择。 这是代码,如果我知道代码错误在哪里以及为什么会非常有用 因为它对我来说完全不可见。 `

magic=[]
charisma=[]
ttt=["Khablan","Gadaan","El-Armoty" ,"Kulayb",'Zaafaran']
def attributeassigner(ww):
   for x in ttt:
       ww.append(random.randrange(1, 10))
   return ww
print(attributeassigner(magic))
print(attributeassigner(charisma))
def maxfinderassigner(ba):
    o=[k for k,x in enumerate(ba) if x == max(ba)]
    return o
def anychooser(dodo):
    e=ttt[dodo.index(max(dodo[t]for t in maxfinderassigner(magic)))]
    return e
print(anychooser(charisma))

`

【问题讨论】:

babao=[k for k,x in enumerate(baba) if x == max(ba)] 中指的是什么? 啊抱歉编辑了它..它是ba 您能否提供一个脚本生成的输出示例,其中您期望其他内容(并提供您期望的示例),或者您收到不理解的错误消息?跨度> [8, 2, 9, 7, 5] [5, 8, 8, 3, 4] Gadaan ,这是错误 .. gadaan 有 2 个魔法,但被选为 el-armoty有 9 个魔法 该代码大部分时间都可以工作..它甚至在魅力结果匹配时有时也可以工作 【参考方案1】:

这应该可以解决问题。它首先会检查是否有人拥有最高的魔法。然后,它将检查具有最高魅力的人。如果有相同数量的字符,则返回Tie

import random

magic = []
charisma = []
ttt = ["Khablan","Gadaan","El-Armoty" ,"Kulayb",'Zaafaran']

def attributeassigner(ww):
   for x in ttt:
       ww.append(random.randrange(1, 10))
   return ww

print(attributeassigner(magic))
print(attributeassigner(charisma))

def anychooser():
    if magic.count(max(magic)) == 1:
        return ttt[magic.index(max(magic))]

    if charisma.count(max(charisma)) == 1:
        return ttt[charisma.index(max(magic))]

    return "Tie"

print(anychooser())

【讨论】:

我所做的更改在anychooser函数中 谢谢你的回答,我真的也需要这个问题的答案.. 但是当这种情况发生时(出于某种原因),错误就会发生.. 当两个角色具有相同的魅力时也会发生,不管他们拥有的魔力。 @Amado 嗯。我不确定我是否理解您希望代码执行的操作。你想优先选择最有魅力的角色,还是优先选择最魔力的角色?哪个更重要? 我想选择具有最高魔法的角色然后如果两个或更多角色具有相同的最大魔法我会列出他们的索引并将其应用于魅力然后取其中最高的并找到他的对应名称 @Amado 我刚刚更新了我的答案【参考方案2】:

表达式

max(dodo[t]for t in maxfinderassigner(magic))

计算具有最大魔法的角色之间的最大魅力。然后,然而,你在所有角色的列表中寻找具有这种最大魅力的角色——不一定是具有最大魔力的角色。

【讨论】:

我无法重现这样的问题。你有例子吗? [2, 1, 2, 3, 3] [8, 7, 9, 9, 2] El-Armoty .. elarmoty 2 魔法 9 魅力,而有 2 个角色有 3 魔法 ..我认为您可能是对的,但为什么它在大多数情况下都有效。 正如我所写的,你并没有选择一个总体上具有最大魅力的角色。您正在计算具有最大魔法的角色中的最大魅力,然后您正在选择具有该魅力的第一个角色。在你上面的例子中,Elarmoty 拥有最大的魔法 9。他/她的魅力是 8。所以你选择了魅力 8 的第一个角色。 [7, 8, 1, 9, 4] [7, 5, 1, 7, 9] Khablan .. 这是一个忽略最高魔法和最高魅力的例子 .. 和选择了第一个人。 这是同一个故事。最高的魔法是 9,结束对应的魅力是 7。因此,您选择列表中魅力 7 的第一个字符,恰好是 Khablan。

以上是关于如何使用第三个列表将列表链接到另一个列表?,有时有效,但发生这种情况时会出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用循环将带有来自 googlesearch 的链接的列表附加到另一个列表?

在不使用导航链接的情况下获取 SwiftUI 列表中的选定项目

单击时如何使列表视图导航到另一个页面

将一行从一个列表视图发送到另一个列表视图

将保存在数据库 sqlite 中的列表视图中的一行发送到另一个列表视图,并使其与第一个列表视图中的行相同

如何使用 Vue draggable 将组件列表中的项目拖动到另一个组件中的列表?