Я создаю 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 переменными это будет совсем другая история.
Что вы подразумеваете под «n переменных»? Пожалуйста, покажите пример
@SIGHUP Под «n переменными» я подразумеваю переменное количество переменных.
@SIGHUP Не могли бы вы загрузить свой ответ еще раз? Я не знаю, почему вы удалили это, но мне хотелось бы взглянуть на это поближе. Помню, это тоже подходило к моему вопросу.
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 комментарии не пишутся с помощью //
?
Он забыл сообщить ChatGPT, что использует Python.
Попробуй это:
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)
Может быть, использовать цикл?