【问题标题】:Exception has occurred: TypeError unsupported operand type(s) for -: 'int' and 'list'发生异常:TypeError 操作数类型不支持 -: 'int' 和 'list'
【发布时间】:2021-09-21 20:49:39
【问题描述】:

尝试制作基本文本地下城游戏并遇到以下错误:

"发生异常:TypeError - 不支持的操作数类型:'int' 和 'list'"

以下错误来自这一行:MonsterHealth = Monster_One_Health - Move_Chooser

import random, math, sys, os, os.path, time

#These Variables are for the Player's Move DMG
Slash = 3.1
Dash = 2.5
Slam = 5

vars = [Slash,Dash,Slam]

Move_Chooser = random.sample(vars, 1)

MonsterHealth = Monster_One_Health - Move_Chooser

    if vars == 2.5:
        print("Player Has Used Dash Attack")
        print("Monster[1] has taken 2.5 Hearts of DMG")
        time.sleep(2)
        print(MonsterHealth)

    elif vars == 3.1:
        print("Player has used Slash Attack")
        print("Monster[1] has taken 3.1 Hearts of DMG")
        time.sleep(2)
        print(MonsterHealth)
    
    elif vars == 5:
        print("Player has used Slam Attack")
        print("Monster[1] has taken 5 Hearts of DMG")
        time.sleep(2)
        print(MonsterHealth)

【问题讨论】:

  • Monster_One_Health的初始定义是什么?
  • Move_Chooser 是一个列表。如果要随机选择一个元素,请使用random.choice
  • 另外,if vars == 2.5 没什么意义。

标签: python list random integer sample


【解决方案1】:

变量Move_Chooserlist 的一种类型。 如错误消息所述,您无法对 list 和 int 操作运算符 -,下次请包含您的所有代码,这样我们就不需要“猜测”您的代码,即使这次很明显。

【讨论】:

    【解决方案2】:

    您似乎没有正确使用,random.sample。因为您只需要一个元素,请使用以下内容:

    Move_Chooser = random.choice(vars)
    

    random.choice 会给你一个列表中的随机元素。另一方面,random.sample 将返回一个列表,这可能是您遇到了该错误。

    给您的一个建议是使用另一个名称而不是 vars,因为这是一个 python 内置函数 (see the docs)。

    【讨论】:

    • 我建议你(因为你已经有一个很好的答案)告知避免使用vars,因为它是一种python方法
    • @azro,我同意你的看法。我刚刚添加了该建议。
    猜你喜欢
    • 2012-12-12
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    相关资源
    最近更新 更多