# -*- coding: utf-8 -*-
import csv
import random
import telebot
from telebot import types
bot =
telebot.TeleBot('токен не спалю')
code_security = 9223
data = [["", "", "", ""]]
data_user = []
# где-то 60 строчек
print("Бот в работе, если хотите собрать данные о
пациентах,зайдите в бота и введите /data")
def check_and_continue_2(message):
if message.text == "/start":
print("Стоп машина, форма сбросилась")
else:
data_user.append(message.text)
msg1 = bot.send_message(message.chat.id, "")
bot.register_next_step_handler(msg1, check_and_continue_3)
def check_and_continue_3(message):
if message.text == "/start":
print("Стоп машина, форма сбросилась")
else:
data_user.append(message.text)
msg1 = bot.send_message(message.chat.id, "")
bot.register_next_step_handler(msg1, check_and_continue_4)
def check_and_continue_4(message):
if message.text == "/start":
print("Стоп машина, форма сбросилась")
else:
data_user.append(message.text)
msg1 = bot.send_message(message.chat.id, "")
bot.register_next_step_handler(msg1, check_and_continue_5)
def check_and_continue_5(message):
**data_user.append(message.text)**
data.append(data_user)
data_user = []
创建为空列表的data_user 变量存在问题(UnboundLocalError:无法访问未与值关联的局部变量“data_user” )。我在代码(变量)发生变化的地方插入了代码。有问题的行会突出显示。求助,订单着火了
当变量在同一函数的主体中声明时,您试图
data_user在函数中使用该变量。check_and_continue_5该语言要求在使用变量之前先对其进行声明。您可以将变量设置data_user为函数内的全局变量,或者将其作为参数传递给使用它的函数。选项1:
选项2:
在这种情况下,在所有调用中,
check_and_continue_5您都需要传递 data_user 作为参数。您还可以实现类对象或字典来存储数据,而不是使用全局变量: