«Вернуть» значение в случае возникновения определенной ошибки

Я создаю n переменных, и всякий раз, когда возникает ошибка, я хочу присвоить переменной определенное значение.

Пример:

a = "abc"
b = 0

def lastnext (word, count):
    last = word[count - 1]
    next = word[count + 1]
   
    return last,next


print(lastnext (a,b))

Таким образом, всякий раз, когда b = (len( a ) - 1) (в данном случае b = 2), переменная next будет давать мне IndexError, потому что word[ 3 ] нет. Затем я хочу «вернуть» определенное значение переменной, например None.

Я думал использовать методы try и except для каждой отдельной переменной, но думаю, что с n переменными это будет совсем другая история.

Может быть, использовать цикл?

CinCout 06.05.2024 09:00

Что вы подразумеваете под «n переменных»? Пожалуйста, покажите пример

SIGHUP 06.05.2024 09:07

@SIGHUP Под «n переменными» я подразумеваю переменное количество переменных.

DeadGamersBr007 06.05.2024 21:06

@SIGHUP Не могли бы вы загрузить свой ответ еще раз? Я не знаю, почему вы удалили это, но мне хотелось бы взглянуть на это поближе. Помню, это тоже подходило к моему вопросу.

DeadGamersBr007 08.05.2024 02:45
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
98
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

def lastnext (word, count):
    // convert word string to a map
    index_to_value_map = {}
    for i in range(len(word)):
        index_to_value_map[i] = word[i]

    // using map.get() to get value or an error string
    last = index_to_value_map.get(count - 1, "No last char")
    next = index_to_value_map.get(count + 1, "No next char")
   
    return last,next

Вы заметили, что в Python комментарии не пишутся с помощью //?

mkrieger1 06.05.2024 09:22

Он забыл сообщить ChatGPT, что использует Python.

Guy 06.05.2024 09:33

Попробуй это:

a = "abcdef"
b = 0

def lastnext (word, count):
    if count-1<0:
        last = None
    else: 
        last = word[count - 1]
    try:
        next = word[count + 1]
    except IndexError:
        next = None
    return last,next

for b in range(len(a)):
    print(lastnext (a,b))

Это дает результат:

(None, 'b')
('a', 'c')
('b', 'd')
('c', 'e')
('d', 'f')
('e', None)

Таким образом, всякий раз, когда индекс выходит за пределы строки None, возвращается как определенное значение.

Здесь используются две возможности:

  • заранее проверив значение count на достоверность и
  • выполнение действия и обнаружение ошибки, как это происходит с try и except.
Ответ принят как подходящий

Если вы не хотите использовать обработку исключений, вы можете сделать это:

def lastnext(word, count):
    rv = ()
    for i in count - 1, count + 1:
        rv += (word[i],) if 0 <= i < len(word) else (None,)
    return rv


word = "ABCDE"

for count in range(len(word)):
    print(lastnext(word, count))

Выход:

(None, 'B')
('A', 'C')
('B', 'D')
('C', 'E')
('D', None)

Вы можете разрезать слово и использовать or для значения по умолчанию.

def lastnext (word, count):
    return word[count-1:count] or None, word[count+1:count+2] or None

a = 'abc'
for i in range(len(a)):
    print(lastnext(a, i))

Выход

(None, 'b')
('a', 'c')
('b', None)

Другие вопросы по теме