我需要用户输入两个数字来形成一个范围,并在没有输入一个或两个数字或输入一个字母时发出错误消息。 我现在做的是
@bot.message_handler(commands=['set'])
def handle_message(message):
if (message.text == '/set'):
bot.send_message(message.chat.id, 'put in a range')
elif message.text.split()[1].isdigit() :
bot.send_message(message.chat.id, "something")
elif message.text.split()[1].isdigit() == False:
bot.send_message(message.chat.id, 'Only letters!')
但问题是,如果用户没有在第二个变量中放入任何内容,我会收到语法错误。我尝试使用
except IndexError:
bot.send_message(message.chat.id, 'Only letters!')
但是返回一个SyntaxError。
我正在寻找的方法是检查message.text.split()[2]
是否存在(有任何值),然后检查它是否是数字。
答案 0 :(得分:2)
您遇到的第一件事是合法的SyntaxError - 如果没有except
,则无法使用try
。请参阅下面的用法。
你要遇到的第二件事是IndexError - 如果你在少于两个参数的情况下寻找第二个参数怎么办?
首先要看你跳跃:
if len(message.text.split()) > 1:
# do check
另一个是捕获TraceBack:
my_messages = [1]
try:
my_messages[2]
except IndexError:
print("length was too short to continue checking!")
如果您正在获取字符串输入,您还应该确保删除额外的空格,因为它可能会让您失望:
message = '1234 '
message.isdigit()
# False!
删除会强制将其作为字符串的空格:
message = message.strip()
message.isdigit()