Задать вопрос
@nemolayn
Создатель бота Nemo

Как сложить воедино все символы кроме первого после переделки в list?

У меня есть функция:
def check_for_command(s):
    if s[0] in prefix:
        l = 1; c = ""
        for c in s:
            if l < len(s):
                c + str(s[l]); l += 1
            else:
                break
        return c

listed = list("!ping")
print(check_for_command(s=listed))

По идее она должна выдавать "ping", но выдает "g" думаю немного не так сделал цикл, что вы думаете по этому поводу?
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@nemolayn Автор вопроса
Создатель бота Nemo
Теперь код который ниже просто удаляет первый элемент в списке а другие просто соеденяет между собой
def check_for_command(s):
    del s[0]; c = "".join(s)
    return c

listed = list("!ping")
print(check_for_command(s=listed))

Результат: 65f2cd6c4b281033199720.jpeg
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Ботописатель... я тебе секрет скажу.
prefix = "!"
s = "!ping"
if s.startswith(prefix):
    command = s[len(prefix):]  # срезы в питоне? не, не слышал
    print('Команда', command)
else:
    print('Это не команда')

Секрет
Сначала выучи основы языка, потом разберись как работают сетевые приложения, и только потом пиши ботов. Иначе так и будешь глупости писать.
Ответ написан
В вашем коде есть несколько ошибок, из-за которых функция не работает, как ожидается. Во-первых, переменная `c` используется как для итерации по символам строки, так и для накопления результата, что некорректно. Во-вторых, операция конкатенации строк не присваивается никуда, поэтому изменения не сохраняются. Давайте исправим ваш код:

def check_for_command(s):
    if s[0] in prefix:
        c = ""  # Используем c только для накопления результата
        for l in range(1, len(s)):  # Начинаем с 1, т.к. пропускаем первый символ
            c += s[l]  # Конкатенируем символы в c
        return c

prefix = ['!']  # Допустим, prefix - это список с одним символом '!'
listed = list("!ping")
print(check_for_command(s=listed))


Этот код должен корректно обрабатывать вашу задачу и возвращать строку "ping". Обратите внимание, что я добавил переменную `prefix`, так как она использовалась в вашем коде, но не была определена. Я предположил, что это список символов, которые вы считаете префиксами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы