#python
#python
Вопрос:
В настоящее время я тестирую некоторые функции. Что-то кажется неправильным, но я просто не могу понять, что.
Есть 2 списка, список предположений a
и список предустановок b
. Я хочу проверить, является ли определенный элемент a
списка:
- Существует в
b
списке и соответствуетb
элементу того же индекса (OnPlace) - Вообще не существует в
b
списке (NonePlace) - Существует в
b
списке, однако индексы соответствующих элементов не совпадают (не на месте)
Код приведен ниже.
Следует отметить две вещи:
- Только целые числа от 1 до 6 будут членами обоих списков в программе.
- Длина списков ограничена 4.
https://hastebin.com/odilafikoy.yaml
a = [1,4,5,6]
b = [1,6,1,1]
# Guess List is x parameter, index is y parameter
def OnPlace(x,y):
global b
if x[y] == b[y]:
return True
def NonePlace(x,y):
global b
if x[y] != b[1] and x[y] != b[2] and x[y] != b[3] and x[y] != b[0]:
return True
def OffPlace(x,y):
global b
if x[y] != b[y]:
if y == 0:
if x[y] == b[1] or x[y] == b[2] or x[y] == b[3]:
return True
if y == 1:
if x[y] == b[0] or x[y] == b[2] or x[y] == b[3]:
return True
if y == 2:
if x[y] == b[1] or x[y] == b[0] or x[y] == b[3]:
return True
if y == 3:
if x[y] == b[0] or x[y] == b[2] or x[y] == b[1]:
return True
print(OnPlace(a,0))
print(NonePlace(a,2))
print(OffPlace(a,3))
Комментарии:
1. Я в замешательстве, вы просите людей отлаживать ваш код для вас? Возможно, вам будет полезно написать тесты для вашего программного обеспечения и, возможно, вернуться, если у вас возникнет конкретная и решаемая проблема
Ответ №1:
Это можно упростить следующим образом, и будет намного легче понять, что происходит
a = [1,4,5,6]
b = [1,6,3,1]
#Guess List is x parameter, index is y parameter
def OnPlace(x,y):
if x[y] == b[y]:
return True
return False
def NonePlace(x,y):
if x[y] not in b:
return True
return False
def OffPlace(x,y):
if x[y] in b and b.index(x[y]) != y:
return True
return False
print(OnPlace(a,1))
print(NonePlace(a,3))
print(OffPlace(a,2))
вам не нужно использовать ключевое слово global для доступа к переменным здесь, проверьте это
чтобы узнать больше о функции индексации списков, взгляните на это