首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何识别变量的类型?

如何识别变量的类型?
EN

Stack Overflow用户
提问于 2019-05-25 11:48:03
回答 1查看 46关注 0票数 1

我正在为discord创建一个清晰的命令,我想让它在你放一个字符串而不是int的时候,它会在聊天中发送一条消息,“请使用数字”。

我尝试过if isinstance(amount, int):,但似乎不起作用。

脚本V

代码语言:javascript
运行
AI代码解释
复制
@client.command()
async def clear(ctx, amount=1):
    role = discord.utils.get(ctx.guild.roles, name="[+] Admin")
    if role in ctx.author.roles:
        if isinstance(amount, int):
            print('int')
        else:
            print('str')

    else:
        await ctx.send(f'You lack the permissions.', delete_after=3)```

> It can identiy if it is an int value

``` Bot is ready. int```

但不是字符串。

代码语言:javascript
运行
AI代码解释
复制
Ignoring exception in command clear:
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 367, in _actual_conversion
    return converter(argument)
ValueError: invalid literal for int() with base 10: 'Hello'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\bot.py", line 859, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 718, in invoke
    await self.prepare(ctx)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 682, in prepare
    await self._parse_arguments(ctx)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 596, in _parse_arguments
    transformed = await self.transform(ctx, param)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 452, in transform
    return await self.do_conversion(ctx, converter, argument, param)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 405, in do_conversion
    return await self._actual_conversion(ctx, converter, argument, param)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 376, in _actual_conversion
    raise BadArgument('Converting to "{}" failed for parameter "{}".'.format(name, param.name)) from exc
discord.ext.commands.errors.BadArgument: Converting to "int" failed for parameter "amount".
EN

回答 1

Stack Overflow用户

发布于 2019-05-25 16:45:42

使用converter并编写error handler来处理无法将输入转换为int时引发的错误:

从discord.ext.commands导入BadArgument

代码语言:javascript
运行
AI代码解释
复制
@client.command()
async def clear(ctx, amount: int=1):
    ...

@clear.error
async def clear_error(ctx, error):
    if isinstance(error, BadArgument):
        await ctx.send("Invalid integer argument.")
    else:
        raise error
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56304548

复制
相关文章
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示: 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
(0,0) (1,0) (2,0) (2,1) (2,2) (2,3) (2,4) (3,4) (4,4)。
福大大架构师每日一题
2023/03/04
1.1K0
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示: 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示:0, 1, 0, 0, 0,0, 1, 1, 1, 0,0,
[(0,0) (1,0) (2,0) (2,1) (2,2) (2,3) (2,4) (3,4) (4,4)]。
福大大架构师每日一题
2023/06/08
3060
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示:0, 1, 0, 0, 0,0, 1, 1, 1, 0,0,
【Python】循环语句 ⑤ ( range 语句 | for 循环本质遍历序列 | 生成由 0 开始到 n 的序列 | 生成由 m 到 n 的序列 | 生成由 m 到 n 的步长为 k 的序列 )
上述语法中的 数据集 是 序列类型 , 该类型变量 用于存储一系列有序的元素 , 常见的序列类型有 :
韩曙亮
2023/10/11
2490
【Python】循环语句 ⑤ ( range 语句 | for 循环本质遍历序列 | 生成由 0 开始到 n 的序列 | 生成由 m 到 n 的序列 | 生成由 m 到 n 的步长为 k 的序列 )
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i]
Bi = { e, f }表示,第i条查询想知道e号、f号实验,一共有多少人(去重统计)。
福大大架构师每日一题
2023/02/12
5610
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i]
从M走到N最少步数
假设一个人站在 X 轴的正半轴上,起始点在 M 点(0 <= M <= 100000),他每次可以向左走一步,向右走一步,或者走到所在坐标乘以2的位置,最终来到 N 点(0 <= N <= 100000)。问:所需的最少步数是几步?(如果不能从 M 走到 N 点,则返回 -1)
echobingo
2018/10/10
8170
2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色
2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色的格子数必须相同的,上下左右的格子算相邻,相邻格子染的颜色必须不同,所有格子必须染色,返回至少多少种颜色可以完成任务。
福大大架构师每日一题
2021/08/30
3420
2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色
输入数字n然后输出0到n的全排列
给定一个正整数n, 则输出0到n的所有排列 输入:2 输出:012 021 102 120 201 210 代码: private static Set<String> result = new HashSet<String>(); public static void allSort(int number) { if (number < 0) { return; } String str=""; for (int i = 0;i <= number; i
用户6055494
2019/10/21
1.1K0
2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并且m > 1,
例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
福大大架构师每日一题
2023/07/08
2080
2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并且m > 1,
Sony RX0M1-M2外接M43接口改装
两者所对应的传感器尺寸不同,同时物理规格也不一样,MFT的卡口直径46.5mm,法兰距38.6mm,EF的直径是54mm,法兰距44.14mm。
云深无际
2023/02/27
1.2K0
Sony RX0M1-M2外接M43接口改装
UVA The ? 1 ? 2 ? ... ? n = k problem
The ? 1 ? 2 ? ... ? n = k problem The problem Given the following formula, one can set operators '+
用户1624346
2018/04/17
5850
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1,给定正数M,表示实验数量,实验编号从0~M-1,给定长度为
B[i] = { e, f }表示,第i条查询想知道e号、f号实验,一共有多少人(去重统计)。
福大大架构师每日一题
2023/06/08
1830
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1,给定正数M,表示实验数量,实验编号从0~M-1,给定长度为
Celery ValueError: n
最近因项目需要,在使用任务队列Celery的时候,出现如题错误,最终在github上里找到解决办法,记录一下。
py3study
2020/01/20
7970
一个正整数 n ,求n!的末尾有几个0
import java.util.Scanner; /** * 输入一个正整数 n ,求n!的末尾有几个0 * 例如:10! = 3628800,则返回 2 */ public class Test1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int coun
小雨的分享社区
2022/10/26
6910
Numpy与矩阵
请注意,本文编写于 980 天前,最后修改于 980 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.4K0
Numpy与矩阵
数学--组合数学--当C(n,m)中n固定m++的递推模板
ll power(ll a, ll b, ll p) { ll ans = 1 % p; for (; b; b >>= 1) { if (b & 1) ans = ans * a % p; a = a * a % p; } return ans; } long long mm[500000]; void init(ll n, ll k) { mm[1] = 1; for (ll i =2;
风骨散人Chiam
2020/11/03
5020
节省大量时间的 Deep Learning 效率神器
写深度学习网络代码,最大的挑战之一,尤其对新手来说,就是把所有的张量维度正确对齐。如果以前就有 TensorSensor 这个工具,相信我的头发一定比现在更浓密茂盛!
McGL
2020/10/30
1.7K0
节省大量时间的 Deep Learning 效率神器
0 到 n-1 的数组判重
首先我们想到的就是hash,通过hash判断一个数字是否在之前出现过只需要O(1)的时间复杂度,我们知道hashset的底层过就是hashmap的key,即hash的实现。
Tim在路上
2020/08/04
3670
C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
川川菜鸟
2021/10/18
2.7K0
构建列表 [[0] * m] * n带来的隐患
这里只修改了L[0][0],但是却L却输出: [[1, 0, 0], [1, 0, 0]]
生信编程日常
2020/05/08
5780
递归实现n^k
#include<stdio.h> #include<stdlib.h> int Power(int m,int n){ if(n<=1){ return m;} return m*Power(m,n-1); } int main(){ int m; int n; printf("请输入需要计算次方的底数与指数:"); scanf("%d %d",&m,&n); a=Power(m,n); printf("结果为:%d\n",a); system("pause")
小雨的分享社区
2022/10/26
2340

相似问题

ValueError: matmul:输入操作数1的核心维数0不匹配,具有gufunc签名(n,k),(k,m?)->(n?,m?)

13

ValueError: matmul:输入操作数1的核心维数0不匹配,具有gufunc签名(n,k),(k,m?)->(n?,m?)(尺码13与1不同)

12

ValueError: matmul:输入操作数1在其核心维度0中不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小%1与%3不同)

2957

ValueError: matmul:输入操作数1在其核心维度0中不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小%2与%1不同)

120

matmul:输入操作数1的核心维度0不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小20与10不同)

117
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档