TypeError: объект int не повторяется, не знаю, почему это происходит - PullRequest
0 голосов
/ 29 мая 2020
def rectangleArea(l):
    lt = list(l[0])
    l = lt[:3:2]
    l.sort()
    x = l[1] - l[0]
    l = lt[1:4:2]
    l.sort()
    y = l[1] - l[0]
    area = x * y
    return area
l = [(30, 60, 60, 30), (50, 10, 10, 50)]
for i in range(2):
    print("Rectangle")
    la = l[i]
    print(la)
    area = rectangleArea(la)
    print(area)

Простите за плохой английский sh. Как видите, кортежи находятся в списке «l», и я не хочу его редактировать. Когда я запускал его без l oop, он работал хорошо. А для l oop появляется «TypeError: объект 'int' не повторяется». Сообщение об ошибке выглядит так:

Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/MP09/help.py", line 19, in <module>
    area = rectangleArea(la)
  File "C:/Users/Administrator/Desktop/MP09/help.py", line 3, in rectangleArea
    lt = list(l1[0])

Я искал об этом, и моя ситуация не похожа на другую. Я предполагаю, что это связано с la = l [i] , но я не уверен. Что не так с этим кодом. Пожалуйста, помогите мне

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

lt = list(l[0]) замените это на lt = list(l) в вашем коде.

Ваш код выбирает стороны прямоугольника одну за другой и передает в функцию. Теперь внутри функции вам просто нужно преобразовать кортеж в список, но вы выбираете первый элемент в нем.

1 голос
/ 29 мая 2020

Я как раз собирался ответить на этот вопрос и увидел, что это есть у кого-то другого, проблема в том, что list () возвращает список из кортежа, строки, списка или пустого списка ... вы передаете ему число в функции .. итак ..

lt = list(l[0])
    l = lt[:3:2]
    l.sort()

если вы передали (30,60,60,30) в эту функцию rectangleArea, вы передали этот кортеж как l, тогда вы запросили l [0], который равен 30. . вы можете передать только строку, кортеж, список или пустой список в функцию python list () ... так что это число не может быть повторено ... если бы это была строка, вы бы в следующей строке искали индекс 3 и 2, когда «30» будет иметь только индексы 0 и 1 .. но вы еще не дошли до этого.

подробнее в list ()

Надеюсь, это было полезно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...