Ошибка в вашем коде: вы пытаетесь повысить мощность перед преобразованием его в int
int(i**2)
#should be
int(i)**2
Другой подход, использующий функцию карты .
Синтаксис: map (забавная c, повторяемая)
В python String является итеративной, что означает, что вы можете выполнять итерацию по ней. Например:
for i in "hello":
print(i)
#output will be:
h
e
l
l
o
Еще одна простая концепция перед переходом к функции карты: функция split () вернет список.
print(type("hello".split()))
#output will be
<class 'list'>
Для ответа на ваш вопрос воспользуйтесь функцией карты:
a = map(int, input('Enter three digits separated by space:').split())
mylist = [i**2 for i in a]
print(mylist)
Объяснение:
- Функция input () попросит пользователя ввести три числа, разделенных пробелом, и это будет строка, теперь вы можете использовать функцию разбиения по возвращаемой строке по входу ().
- Здесь функция разделения вернет список.
- Теперь в изображение входит функция map, она возьмет каждый элемент из списка, возвращенного на шаге 2, и отобразит его в функции, в этом случае он отобразит каждый элемент списка в int.
- Переменная a является объектом карты, а объект карты является итеративным, так что вы можете подать заявку на l oop или понимание списка (вы использовали понимание списка), чтобы получить желаемый результат