это мой код, может ли кто-нибудь указать, где я ошибся? Я новичок в кодировании, поэтому ожидаю помощи от сообщества.
first_set = (1,2,3,4)
second_set = (2,7,5,4)
m = len(first_set)
n = len(second_set)
a = 0
b = 0
for a in range(m):
for b in range(n):
while first_set[a]==second_set[b]:
print (first_set[a])
This prints 2 in whole screen :(
Попробуйте заменить while
на if
.
В вашем примере вы используете кортежи, а не наборы, и отступ нарушен.
Вы можете использовать set.intersection
, чтобы получить общие элементы двух наборов.
a = set([1,2,3])
b = set([4,5,3])
print(a.intersection(b)) # {3}
print(a & b) # shorthand version of the above
У вас нет отступов, поэтому first_set[a] и second_set[b] застряли на первом элементе. Попробуйте заменить while на if или создать новую строку, в которой вы заставите second_set и first_set перейти к следующему элементу.
// это будет правильная форма
first_set = (1,2,3,4)
second_set = (2,7,5,4)
m = len(first_set)
n = len(second_set)
a = 0
b = 0
for a in range(m):
for b in range(n):
if first_set[a]==second_set[b]:
print (first_set[a])
It's all about the tabs ;c
Как мне хорошо разобраться с отступом? также спасибо за ваш совет
first_set = (1,2,3,4) second_set = (2,7,5,4) m = len(first_set) n = len(second_set) a = 0 b = 0 для a в диапазоне (m): для b in range(n): if first_set[a]==second_set[b]: print (first_set[a]) Все дело во вкладках ;c
Здесь есть несколько проблем. Во-первых, вы можете использовать фигурные скобки для определения наборов:
first_set = {1, 2, 3, 4}
second_set = {2, 7, 5, 4}
Теперь вам не нужны len() или range() или индексные переменные для циклического перебора наборов:
for a in first_set:
for b in second_set:
#do something
Затем цикл while зависает, как только вы находите два одинаковых элемента, вместо этого это должен быть блок if:
for a in first_set:
for b in second_set:
if a == b:
print(a)
И, наконец, как указывали другие, это простое пересечение множеств, и у python есть встроенная поддержка для него.
while first_set[a]==second_set[b]:
Вы никогда не меняетеa
илиb
внутри циклаwhile
, поэтому он зацикливается бесконечно, когда они равны.