Я готовлюсь к выпускному экзамену, и у меня было задание, где я должен проверить, есть ли два "F" рядом друг с другом. Например, "F" в ["F","F","I"].
Я сделал код, но он выдал ошибку (индекс списка вне допустимого диапазона). Пытался найти решение, но не смог.
ekf = 0
for i in range(len(data)):
if data[i] == "F" and data[i+1] == "F":
ekf = ekf+1
print(ekf, "-szer/-szor volt egymas utan ket fej.")






Обратите внимание, что для последнего i оно равно len(data) - 1. Затем i+1 = len(data), что выходит за рамки.
Рассмотреть возможность
for i in range(1, len(data)):
if data[i-1] == "F" and data[i] == "F":
...
Если ваши данные представляют собой строку, а ваши значения — символы, обратите внимание, что вы также можете использовать выражение
"FF" in data
чтобы проверить, содержит ли строка data подстроку FF.
Кроме того, вы можете использовать data.count("FF") для подсчета непересекающихся вхождений.
Вы также можете использовать молния и все, это невыгодно для проверки двух соседних элементов, но это будет, если вам нужно проверить элементы n рядом друг с другом, и они являются числами или чем-то еще:
import unittest
def two_adjacent_chars(letters: str, char: str) -> bool:
for adjacent_chars in zip(letters, letters[1:]):
if all(c == char for c in adjacent_chars):
return True
return False
class Test(unittest.TestCase):
'''Test Cases'''
test_cases = [
(["A", "B", "C", "F", "F", "D"], 'F', True),
(["A", "B", "C", "C", "F"], 'F', False)
]
def test_two_adjacent_chars(self) -> None:
for [letters, char, expected] in self.test_cases:
actual = two_adjacent_chars(letters, char)
self.assertEqual(actual, expected)
if __name__ == "__main__":
unittest.main()
Вы полностью понимаете, что означает индекс списка вне диапазона?