我正在 pytelegramBotAPI 上制作第一个机器人。我需要bot在写/start的时候获取对象的名字,然后next_step_handler
通过它获取价格并全部写入list list
,然后打印出来。一切准备就绪,但列表存在问题list
:它没有以完整的文字(名称)或数字(价格)显示,而是以符号显示。测试后,print
发出:
['Б', 'о', 'н', 'с', 'а', 'й', '2', '0', '0', '0'].
虽然预期的结果是这样的:
['Бонсай', '2000']
代码(工作和测试):
import telebot
bot = telebot.TeleBot('')
import sqlite3
conn = sqlite3.connect('nb.db', check_same_thread = False)
c = conn.cursor()
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(call.message.chat.id, "Хорошо.. название, к примеру:\nЯпонский Бонсай")
bot.register_next_step_handler(call.message, Costmerch)
def Costmerch(message):
merch = []
merch += message.text
bot.send_message(message.chat.id, 'Теперь же, цена. Минимум - 1000, Максимум - 10000000')
bot.register_next_step_handler(message, Costmerch, merch)
def Costmerchprint(message, merch):
merch += message.text
print(merch)
以您期望的方式将元素添加到列表中是通过方法
append
而不是运算符完成的+=
。将您的代码行更改为以下内容:并且
+=
类型操作数的运算符的工作方式与您在“错误”版本中演示的完全一样,应该归咎于“竹子”,而是描述此类工作的语言标准。list
str