首页 > 解决方案 > 如何修复“TypeError:切片索引必须是整数或无或具有 __index__ 方法”错误

问题描述

我试图在不和谐机器人的选择数字游戏中区分作为数字的不和谐消息和作为字母的不和谐消息。我想我可以只使用startswith参数来查看消息是否包含数字,但是每当我尝试它时,它都会返回“TypeError:切片索引必须是整数或无或有索引方法”。我怎样才能解决这个问题?

if current_guess.startswith('1','2','3'):
            current_guess = int(current_guess)
            if best_id == "N/A":
                best_guess = current_guess
                best_id = current_id
            else:
                if abs(current_guess-number)<abs(best_guess-number):
                    best_guess = current_guess
                    best_id = current_id
                else:
                    return

因为startswith只允许搜索3个参数,所以我只是复制了这段代码3次,每次检查三个数字1-9。

我期待它能够检测消息是否由数字组成,但它只是输出一个我不明白的错误。

 line 57, in PAN
    if current_guess.startswith('1','2','3'):
TypeError: slice indices must be integers or None or have an __index__ method

标签: pythondiscord.py-rewrite

解决方案


如果我正确理解您的问题,您想检查消息是否是数字..您可以使用 try / except:

try:
    current_guess = int(current_guess)

except ValueError:
    # warn user about only being possible to send digits

推荐阅读