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

如何识别变量的类型?
EN

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

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

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

脚本V

代码语言:javascript
代码运行次数:0
运行
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
代码运行次数:0
运行
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
代码运行次数:0
运行
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

复制
相关文章
JavaScript松散类型变量如何检测类型?
先上结论:如果判断的是基本数据类型或JavaScript内置对象,使用toString;如果要判断的是自定义类型,请使用instanceof。
程序员老鱼
2022/12/02
9300
prcharm如何查看当前变量类型
MATLAB直接可以查看变量信息,可以很方便的进行调试,C++/C语言定义变量时指定变量的类型。而python是脚本语言只有在运行时才知道。因此查看python变量必须在debug模式下才可以。
狼啸风云
2019/03/15
1.3K0
【MATLAB】变量 ( 变量引入 | 变量类型 )
使用 matlab 代码编写如下公式时 , 公式层级很多 , 很复杂 , 需要很多括号进行优先级限制 ;
韩曙亮
2023/03/29
5.6K0
【MATLAB】变量 ( 变量引入 | 变量类型 )
再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
如果判断的是基本数据类型或JavaScript内置对象,使用toString;如果要判断的是自定义类型,请使用instanceof。
程序视点
2023/06/13
4200
再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
TypeScript 中的变量声明:变量声明的语法、变量的作用域、变量的类型推断和类型断言
TypeScript 是一种由微软开发的静态类型编程语言,它是 JavaScript 的超集,并且可以在编译时进行类型检查。在 TypeScript 中,变量声明是非常重要的一个概念,它定义了变量的名称和类型。通过正确地声明变量,我们可以增强代码的可读性、可维护性和可扩展性。本文将详细介绍 TypeScript 中的变量声明,包括变量声明的语法、变量的作用域、变量的类型推断和类型断言等内容。
网络技术联盟站
2023/07/06
8310
变量的数据类型
Java是一种强类型语言,对不同数据结构进行了严格的区分,对每一种数据类型都做了明确定义,也同时规定了每一种数据类型的变量在内存中占用空间的大小。
星哥玩云
2022/09/14
6330
变量的数据类型
变量类型-Tuple
教程: 一:元组的创建     元组(tuple)与列表类似,不同之处在于元组的元素不能修改     (1)tuple写在圆括号之间,元素用逗号隔开     (2)元组元素的类型可以不同     (3)一个元素,需要在元素后添加逗号tup = (20,)     (4)元组也可以被索引和切片,方法一样 二:元组的索引     变量[头标:尾标]     从前到后:0---end     从后到前:-1---->-len(str) 三:元组的更新---->元组的值不能修改 四:元组的删除     元组中的元素不允许删除     del 删除整个元组 五:元组操作符     +     用于组合(连接)元组     *       用于重复元组     in 、not in 判断元素是否存在 六:元组内建函数     len(tuple)        计算元素的个数     max(tuple)     min(tuple)     tuple(seq) 七:为什么还要用元组???     (1)速度快     (2)写保护     (3)元组可以作为key CODE: # -----------------------------------------------------------------------------------------------------# # 元组的创建 # -----------------------------------------------------------------------------------------------------# my_tuple1 = ('1', "2", 'faith', 'English') my_tuple2 = ('I', 'Love', 'Python', 'and', 'C++') # -----------------------------------------------------------------------------------------------------# # 元组的索引 # -----------------------------------------------------------------------------------------------------# print(my_tuple1) print(my_tuple1[2])     # 元组的索引 print(my_tuple1[1:3])   # 元组的切片 # -----------------------------------------------------------------------------------------------------# # 元组的更新(元组不能更新) # -----------------------------------------------------------------------------------------------------# # my_tuple1[1] = 'like' # print(my_tuple1) # -----------------------------------------------------------------------------------------------------# # 元组的删除 # -----------------------------------------------------------------------------------------------------# print('del前:', my_tuple2)   # 放在后面验证是否删除 del my_tuple2 # -----------------------------------------------------------------------------------------------------# # 元组的操作符 # -----------------------------------------------------------------------------------------------------# my_tuple3 = (1, 2, 3) + (4, 5, 6) print("元组组合:", my_tuple3) print("元组重复:", my_tuple3*3) print("元素是否在列表中:", 3 in my_tuple3) # ---------------------------
py3study
2020/01/19
9280
变量类型-Dict
教程: 一:字典的创建     1:字典的介绍------>d = {key1:value1, key2:values2}     (1)dictionary(字典) 是 Python 中最有用的数据类型。字典是无序的对象集合     (2)字典当中的元素是通过键来存取的,而不是通过偏移存取。     (3)字典是一种映射类型,它是一个无序的键(key) : 值(value)对集合。     (3)和字符串一样,list可以被索引和切片     (4)键(key)必须使用不可变类型。必须是唯一的     此处高能:不可变类型-----数字,字符串,元组,     2:字典的创建     (1)使用花括号         dict={key1:value1, key2:values2}         或者d = dict{},再添加相应的元素 !     (2)使用内联函数dict()         d = dict() 二:字典的索引     根据key即键值可以直接访问字典中的元素     使用get函数     如果用没有的键值访问字典,会出现什么情况呢!? 三:字典的修改     对列表中的数据项进行修改或者更新     d[key]= value     d1.update(d2) 四:字典的删除     del d['key']    删除键值     d.clear()    清空字典     del d        删除字典 五:字典内置函数     len(dict)----键的总数     d.keys()-------输出所有的键     d.values()-----输出所有的值     d.get(key)-----得到键对饮的值     d1.update(d2)--把d2的键和值更新到d1中     d.pop(key)-----删除key对应的元素 CODE: # -----------------------------------------------------------------------------------------------------# # 字典的创建方法一 # -----------------------------------------------------------------------------------------------------# my_dict1 = {'Name': 'faith', 'age': '100', 'grade': '80', 'hobby': 'basketball'} print('my_Dict1', my_dict1) my_dict2 = {}       # 注意这里的报错??? my_dict2['one'] = "this is the first value!" my_dict2[2] = "this is the second value!" my_dict2['3'] = "python" print('my_dict2', my_dict2) # -----------------------------------------------------------------------------------------------------# # 字典的创建方法二---------解决上面的问题 # -----------------------------------------------------------------------------------------------------# my_dict3 = dict() # my_dict3 = dict(name='a', old=33) my_dict3.update({"first": 'funny', "middle": 2, "last": 'dag'}) # -----------------------------------------------------------------------------------------------------# # 字典的索引 # -----------------------------------------------------------------------------------------------------# # 获取元素的值方法一 print('方法一获取元素的值:', my_dict3["first"]) # 获取元素的值方法二 my_value = my_dict3.get('first')  # 得到键对应的值 print('方法二获取元素的值:', my
py3study
2020/01/19
8830
Python 变量类型
#!/usr/bin/python # -*- coding: UTF-8 -*- counter = 100 # 赋值整型变量 miles = 1000.0 # 浮点型 name = "John" # 字符串 print counter print miles print name
想偷懒的程序员
2019/11/06
1.8K0
变量及类型
变量以及数据类型 一、变量的定义 对于重复使用,并且经常需要修改的数据,可以定义为变量,来提高编程效率。
以某
2023/03/07
7580
变量及类型
Python 变量类型
等号(=)用来给变量赋值。 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
小小工匠
2021/08/16
1.2K0
Python基本的变量类型
初识: print('hello world') print("hello world") print('hello','world') 错误方式: ERROR:print 'hello' ERROR:print "hello" Python基本数据类型: 类型: Number包括整数+小数 整数: int 浮点数:float(不分精度) 布尔型:bool 复数: complex // 36j 简单运算 判断数据类型 type(param) 类型合并
ZONGLYN
2019/08/08
9210
Java变量类型
Java变量类型 在Java语言中,所有的变量在使用前必须声明 声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...]; 格式说明: type:为Java数据类型 identifier:是变量名 可以使用逗号隔开来声明多个同类型变量 int a, b, c; // 声明三个int型整数:a、 b、c int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 byte z = 22;
用户8639654
2021/07/19
8570
变量类型-Set
教程:     集合是一个无序不重复元素的序列,它的特点是:有的可变,有的不可变,元素无序不可重复! 一:集合的创建     (1)使用花括号         set={value1, values2}         注意创建一个空集合的时候不能用{},此时创建的是一个字典     (2)使用内联函数set()------>可以原地修改的集合         s = set()     注意:    集合是无序的(集合不是序列类型,则集合也不支持索引和切片),         打印结果取决于内部存储结构和输出方式     (3)使用内联函数frozenset()---->hashable 可哈希卡类型 二:集合的索引(不允许)      File "<ipython-input-5-9b6a789630ee>", line 1, in <module>         set_1[1]     TypeError: 'set' object does not support indexing 三:集合的运算     (1)元素与集合之间的关系         'i' in set('ilove')     (2)集合a与集合b之间的关系         a == b            判断是否相等         a < b 或者 a.issubset(b) 判断是否为子集         a 并 b  ---> a|b 或者 a.union(b)         a 交 b  ---> a&b 或者 a.intersection(b)         a 补 b  ---> a-b 或者 a.difference(b)         a 和 b 的对称差集    a^b 或者 a.symmetric_difference(b) 三:集合元素的添加     (1)方法一:    s.add(x)     (2)方法二:      s.update(x)    其中x可以是列表,元组,字典 四:集合元素的删除     (1)方法一:    s.remove(x)    元素不存在发生错误     (2)方法二:      s.discard(x)    元素不存在不会发生错误     (3)方法三:      s.pop()        随机删除一个元素     (4)方法四:      s.clear()    清空集合 五:集合内置函数     len(set)----set元素的总数     set.add()-----添加     set.update()--更新     还包括上面的四个函数 CODE: # -----------------------------------------------------------------------------------------------------# # 集合的创建 # -----------------------------------------------------------------------------------------------------# set_1 = set('abracadabra')  # 创建可变的集合 print("set_1:", set_1) set_1.add('python')         # 元素的添加 print("添加Python后set_1:", set_1) set_2 = set('alacazam') print("set_2:", set_2) set_3 = frozenset('faith')  # 创建不可变的集合验证元素不可添加 print("创建不可变集合set_3:", set_3) # -----------------------------------------------------------------------------------------------------# # 集合的运算 # -----------------------------------------------------------------------------------------------------# print("set_1 - set_2: ", set_1 - set_2) print("set_1 | set_2: ", set_1 | set_2) print("set_1 & set_2: ", set_1 & set_2) print("set_1 ^ set_2: ", set_1 ^ set_2) # ----------------------------
py3study
2020/01/19
7040
变量类型-List
教程: 一:列表的创建     List(列表) 是 Python 中使用最频繁的数据类型。列表中元素的类型可以不相同,数字,字符串甚至可以包含列表(所谓嵌套)     (1)List写在方括号之间,元素用逗号隔开     (2)和字符串一样,list可以被索引和切片     (3)List中的元素是可以改变的 二:列表的索引     变量[头标:尾标]     从前到后:0---end     从后到前:-1---->-len(str)     list.index("s") 三:列表的更新     对列表中的数据项进行修改或者更新     使用append()方法来添加列表项 四:列表项的删除     del     remove 五:列表操作符     +     用于组合列表     *       用于重复列表     in 、not in 六:列表函数     len,max,min,-----list()     list.append()末尾添加项     list.index('')末尾添加项     list.pop()删除列表项     list.clear()等等     list.reverse()元素翻转     list.sort()对列表进行排序 七:多维列表的创建及访问方式     matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]     matrix[1][2]     Out[2]: 6 八:列表和字符串的相互转化     str.split(sep=None, maxsplit = -1)    将字符串分各成列表     sep指定分隔符     maxsplite分割成的数量 九:"sep".join(list)      可以是split的逆运算     S.jion(iterable)    --->str        列表转换为字符串     sep = separator    分隔器 IS S     example:     "."join(list)    用.连接字符串
py3study
2020/01/19
7720
变量类型-String
教程: 一:字符串的创建     用单引号、双引号括起来,同时用转义字符转义 二:字符串的索引     变量[头标:尾标]     从前到后:0---end     从后到前:-1---->-len(str) 三:获取字符串的索引序号     str.index("s") 四:字符串的更新     截取字符串的一部分与其他字符串拼接,     但是字符串不能修改! 五:Python转义字符     \\     反斜杠符号     \'     单引号     \"     双引号     \a     响铃 六:字符串运算符     +, * number, [number],[a:b]     in 、not in     r在字符串第一个引号前面表示原始字符串,没有没有转义字符 六:字符串内建函数     max、min最大、最小的     upper小写转换为大写     lower大写转成小写     len求长度
py3study
2020/01/19
1K0
变量类型-Number
教程: 一:数字类型     (1)int 没有限制大小,有以下的四种表现形式:         1:2进制:以'0b'开头---bin         2:8进制:以'0o'开头---oct         3:10进制:正常显示----int         4:16进制:以'0x'开头- hex     (2)float:4个字节     (3)复数(complex)--a + bj,complex(a,b)--实部a和虚部b都是浮点型     (4)bool:比如True Python有个特别的机制,它会在解释器启动的时候事先分配好一些缓冲区,这些缓冲区部分是固定好取值,例如整数[-5,256]的内存地址是固定的(这里的固定指这一次程序启动之后,这些数字在这个程序中的内存地址就不变了,但是启动新的python程序,两次的内存地址不一样)。有的缓冲区就可以重复利用。这样的机制就使得不需要python频繁的调用内存malloc和free。 二:数字运算     (1)加减乘除(/总返回一个浮点数)     (2)// 取整   % 取余    **乘方 三:数字类型转换     上面的方法进行转换 四:数学函数     (1)math库中的函数abs, exp, max,min,pow(x, y)等     (2)随机数函数random()\uniform(x, y)     (3)三角函数sin,cos 五:数字常量     e和pi
py3study
2020/01/19
7000
Python 变量类型
变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。 ---- 变量赋值 Python 中的变量赋值不需要类型声明。 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 等号(=)用来给变量赋值。 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。 例
小小科
2018/05/04
1.7K0
Python 变量类型
点击加载更多

相似问题

如何识别变量的对象类型?

43

识别变量类型

10

C++如何识别变量的类型

22

SPSS AnswerTree如何识别变量类型?

20

C:识别变量类型

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文