0

我正在用计算器之类的东西做一个电报机器人,我正在尝试附加所有输入的值,以便我可以将值保存在变量中。

        numpad = InlineKeyboardMarkup(inline_keyboard=[
            [InlineKeyboardButton(text='1', callback_data= '1'),
            InlineKeyboardButton(text='2', callback_data= '2'),
            InlineKeyboardButton(text='3', callback_data= '3')],
            [InlineKeyboardButton(text='4', callback_data= '4'),
            InlineKeyboardButton(text='5', callback_data= '5'),
            InlineKeyboardButton(text='6', callback_data= '6')],
            [InlineKeyboardButton(text='7', callback_data= '7'),
            InlineKeyboardButton(text='8', callback_data= '8'),
            InlineKeyboardButton(text='9', callback_data='9')],
            [InlineKeyboardButton(text='0', callback_data='0'),
             InlineKeyboardButton(text='.', callback_data='.')],
            [InlineKeyboardButton(text='ENTER', callback_data='done')],
                               ])

        bot.sendMessage(from_id, 'How much u wanna change bro', reply_markup=numpad)

    if query_data in ['1','2','3','4','5','6','7','8','9','0']:
        print('hi')
        amt= []
        for query_data in amt:
            amt.append(query_data)
            z = list[amt]
    if query_data == 'done':
        bot.sendMessage(from_id, "is this the amount you want to change{}?".format(z))
        print (z)
4

2 回答 2

0

我相信问题在于这部分代码:

    amt= []
    for query_data in amt:
        amt.append(query_data)
        z = list[amt]

我不完全确定 python 语法1,但这似乎为query_datafor 循环的范围创建了一个新变量。
这意味着您为amt. 但是amt是空的,所以你根本不做循环。
我不确定您的循环打算做什么,但不只是使用在所有输入的时间内存在的变量(最简单的例子:全局变量)更适合您的需求吗?如果您有一个 global amt,则可以将该代码块替换为

amt.append(query_data)
z = list[amt]

但请注意,一旦您同时拥有多个用户,全局变量就会引起麻烦。


[1] 请注意,python 只是替换了您的amt变量。这是一个例子:

>>> alpha = []
>>> beta = [1,2,3]
>>> for alpha in beta:
...     print(1)
...
1
1
1
>>> alpha
3

所以即使 myalpha是一个列表,它也变成了一个整数值3

于 2018-03-19T08:54:40.350 回答
0

这里:

for query_data in amt:
    amt.append(query_data)
    z = list[amt]

在第 1 行,你的意思是“amt”,是“numpad”吗?因为“mean”是一个空列表,你想在“for”之后填写它。所以也许正确的代码是:

for query_data in numpad:
    amt.append(query_data)
    z = list[amt]
于 2017-10-03T10:02:12.540 回答