Примітка: Це український переклад тесту оцінки навичок Python від LinkedIn. Для оригінальної англійської версії дивіться python-quiz.md.
- Абстрактний клас — це назва будь-якого класу, з якого можна створити об'єкт.
- Абстрактні класи повинні бути перевизначені кожного разу, коли з них створюється об'єкт.
- Абстрактні класи повинні успадковуватися від конкретних класів.
- Абстрактний клас існує лише для того, щоб інші "конкретні" класи могли успадковуватися від абстрактного класу.
- Функція
any()завжди повертає випадковий елемент зі списку. - Функція
any()повертає True, якщо будь-який елемент у списку оцінюється як True. Інакше вона повертає False. - Функція
any()приймає як аргументи список для перевірки та елемент для перевірки. Якщо "будь-який" з елементів у списку відповідає елементу для перевірки, функція повертає True. - Функція
any()повертає булеве значення, яке відповідає на питання "Чи є в цьому списку елементи?"
приклад
if any([True, False, False, False]) == True:
print('Yes, there is True')
>>> 'Yes, there is True'- зв'язаний список
- черга
- множина
- OrderedDict
- Статичні методи називаються статичними, тому що вони завжди повертають
None. - Статичні методи можуть бути прив'язані як до класу, так і до екземпляра класу.
- Статичні методи здебільшого служать як утилітарні або допоміжні методи, оскільки вони не можуть отримати доступ або змінити стан класу.
- Статичні методи можуть отримати доступ і змінити стан класу або екземпляра класу.
- Атрибути — це розширені версії оператора
if/else, які використовуються для перевірки рівності між об'єктами. - Атрибути — це спосіб зберігати дані або описувати стан для класу або екземпляра класу.
- Атрибути — це рядки, які описують характеристики класу.
- Аргументи функцій називаються "атрибутами" в контексті методів класу та методів екземпляра.
Пояснення: Атрибути визначаються під класом, а аргументи — під функціями. Аргументи зазвичай називають параметрами, тоді як атрибути — це конструктори класу або екземпляра класу.
count, fruit, price = (2, 'apple', 3.5)
- Призначення кортежу.
- Розпакування кортежу.
- Зіставлення кортежу.
- Дублювання кортежу.
- метод
.delete() -
pop(my_list) -
del(my_list) - метод
.pop()
приклад
my_list = [1,2,3]
my_list.pop(0)
my_list
>>>[2,3]- Для захоплення аргументів командного рядка, наданих під час виконання файлу.
- Для з'єднання різних систем, таких як веб-інтерфейс, API-сервіс, база даних та мобільний додаток.
- Для створення знімка всіх пакетів і бібліотек у вашому віртуальному середовищі.
- Для сканування стану вашої екосистеми Python, перебуваючи у віртуальному середовищі.
- O(n), також називається лінійним часом.
- O(log n), також називається логарифмічним часом.
- O(n^2), також називається квадратичним часом.
- O(1), також називається постійним часом.
Q10. Який правильний синтаксис для визначення класу під назвою Game, якщо він успадковує від батьківського класу під назвою LogicGame?
-
class Game(LogicGame): pass -
def Game(LogicGame): pass -
def Game.LogicGame(): pass -
class Game.LogicGame(): pass
Пояснення: Батьківський клас, від якого успадковується, передається як аргумент дочірньому класу. Тому тут перший варіант є правильною відповіддю.
- A
def sum(a, b):
"""
sum(4, 3)
7
sum(-4, 5)
1
"""
return a + b- B
def sum(a, b):
"""
>>> sum(4, 3)
7
>>> sum(-4, 5)
1
"""
return a + b- C
def sum(a, b):
"""
# >>> sum(4, 3)
# 7
# >>> sum(-4, 5)
# 1
"""
return a + b- D
def sum(a, b):
###
>>> sum(4, 3)
7
>>> sum(-4, 5)
1
###
return a + bПояснення: Використовуйте """ для початку та закінчення docstring і використовуйте >>> для представлення виводу. Якщо ви напишете це правильно, ви також можете запустити doctest, використовуючи вбудований модуль doctest
-
set -
list -
None -
dictionary -
Ви можете побудувати стек тільки з нуля.
college_years = ['Freshman', 'Sophomore', 'Junior', 'Senior']
return list(enumerate(college_years, 2019))-
[('Freshman', 2019), ('Sophomore', 2020), ('Junior', 2021), ('Senior', 2022)] -
[(2019, 2020, 2021, 2022), ('Freshman', 'Sophomore', 'Junior', 'Senior')] -
[('Freshman', 'Sophomore', 'Junior', 'Senior'), (2019, 2020, 2021, 2022)] -
[(2019, 'Freshman'), (2020, 'Sophomore'), (2021, 'Junior'), (2022, 'Senior')]
-
selfозначає, що не потрібно передавати інші аргументи в метод. - Немає реальної мети для методу
self; це просто історичний комп'ютерний жаргон, який Python зберігає для узгодженості з іншими мовами програмування. -
selfпосилається на екземпляр, метод якого був викликаний. -
selfпосилається на клас, від якого було успадковано для створення об'єкта за допомогоюself.
Простий приклад
class my_secrets:
def __init__(self, password):
self.password = password
pass
instance = my_secrets('1234')
instance.password
>>>'1234'- Ви можете призначити ім'я кожному з членів
namedtupleі посилатися на них таким чином, подібно до того, як ви отримуєте доступ до ключів уdictionary. - Кожен член об'єкта namedtuple можна індексувати безпосередньо, як у звичайному
tuple. -
namedtuplesтакі ж ефективні за пам'яттю, як і звичайніtuples. - Не потрібно імпортувати
namedtuples, оскільки вони доступні в стандартній бібліотеці.
Ми повинні імпортувати це за допомогою: from collections import namedtuple
- Методи екземпляра можуть змінювати стан екземпляра або стан його батьківського класу.
- Методи екземпляра містять дані, пов'язані з екземпляром.
- Метод екземпляра — це будь-який метод класу, який не приймає аргументів.
- Метод екземпляра — це звичайна функція, яка належить класу, але вона повинна повертати
None.
- Вона захищає дані від зовнішнього втручання.
- Батьківський клас інкапсульований, і жодні дані з батьківського класу не передаються дочірньому класу.
- Вона зберігає дані та методи, які можуть маніпулювати цими даними, в одному місці.
- Вона дозволяє змінювати дані тільки методами.
- Він повідомляє комп'ютеру, який фрагмент коду виконати, якщо інструкції, які ви закодували, неправильні.
- Він виконує один фрагмент коду, якщо всі імпорти були успішними, і інший фрагмент коду, якщо імпорти не були успішними.
- Він виконує один фрагмент коду, якщо умова істинна, але інший фрагмент коду, якщо умова хибна.
- Він повідомляє комп'ютеру, який фрагмент коду виконати, якщо є достатньо пам'яті для його обробки, і який фрагмент коду виконати, якщо недостатньо пам'яті для його обробки.
- dictionary
- set
- None. Ви можете побудувати чергу тільки з нуля.
- list
-
my_game = class.Game() -
my_game = class(Game) -
my_game = Game() -
my_game = Game.create()
- Вона створює шлях від кількох значень в ітерованому об'єкті до одного значення.
- Вона застосовує функцію до кожного елемента в ітерованому об'єкті і повертає значення цієї функції.
- Вона перетворює складний тип значення на простіші типи значень.
- Вона створює відображення між двома різними елементами різних ітерованих об'єктів.
Пояснення: - Синтаксис функції map() - це list(map(function,iterable)). Простий пошук площі за допомогою map виглядатиме так
import math
radius = [1,2,3]
area = list(map(lambda x: round(math.pi*(x**2), 2), radius))
area
>>> [3.14, 12.57, 28.27]- Функція поверне RuntimeError, якщо ви не повернете значення.
- Якщо ключове слово return відсутнє, функція поверне
None. - Якщо ключове слово return відсутнє, функція поверне
True. - Функція увійде в нескінченний цикл, оскільки вона не знатиме, коли припинити виконання свого коду.
довідка. Коли оператор return є None або не має значення, або немає оператора return, функція повертає None.
- Він використовується для пропуску оператора
yieldгенератора і повернення значення None. - Це нульова операція, яка використовується в основному як заповнювач у функціях, класах тощо.
- Він використовується для передачі керування від одного блоку операторів до іншого.
- Він використовується для пропуску решти циклу
whileабоforі повернення до початку циклу.
Оператор pass використовується як заповнювач для майбутнього коду. Коли виконується оператор pass, нічого не відбувається, але ви уникаєте помилки, коли порожній код не дозволений. довідка
- аргументи
- парадигми
- атрибути
- декоратори
-
slot -
dictionary -
queue -
sorted list
- коли він зустрічає нескінченний цикл
- коли він зустрічає оператор if/else, який містить ключове слово break
- коли він оцінив кожен елемент в ітерованому об'єкті, над яким він працює, або зустрічається ключове слово break
- коли час виконання циклу перевищує O(n^2)
Q27. Припускаючи, що вузол знаходиться в односпрямованому зв'язаному списку, яка часова складність пошуку конкретного вузла в односпрямованому зв'язаному списку?
- Час виконання становить O(n), оскільки в найгіршому випадку вузол, який ви шукаєте, є останнім вузлом, і кожен вузол у зв'язаному списку має бути відвіданий.
- Час виконання становить O(nk), де n представляє кількість вузлів, а k представляє час, необхідний для доступу до кожного вузла в пам'яті.
- Час виконання не може бути визначений, якщо ви не знаєте, скільки вузлів знаходиться в односпрямованому зв'язаному списку.
- Час виконання становить O(1), оскільки ви можете індексувати безпосередньо до вузла в односпрямованому зв'язаному списку.
Q28. Маючи наступні три списки, як би ви створили новий список, який відповідає бажаному виводу, надрукованому нижче?
fruits = ['Apples', 'Oranges', 'Bananas']
quantities = [5, 3, 4]
prices = [1.50, 2.25, 0.89]
#Desired output
[('Apples', 5, 1.50),
('Oranges', 3, 2.25),
('Bananas', 4, 0.89)]- A
output = []
fruit_tuple_0 = (first[0], quantities[0], price[0])
output.append(fruit_tuple)
fruit_tuple_1 = (first[1], quantities[1], price[1])
output.append(fruit_tuple)
fruit_tuple_2 = (first[2], quantities[2], price[2])
output.append(fruit_tuple)
return output- B
i = 0
output = []
for fruit in fruits:
temp_qty = quantities[i]
temp_price = prices[i]
output.append((fruit, temp_qty, temp_price))
i += 1
return output- C
groceries = zip(fruits, quantities, prices)
return groceries
>>> [
('Apples', 5, 1.50),
('Oranges', 3, 2.25),
('Bananas', 4, 0.89)
]- D
i = 0
output = []
for fruit in fruits:
for qty in quantities:
for price in prices:
output.append((fruit, qty, price))
i += 1
return output- Функція
all()повертає булеве значення, яке відповідає на питання "Чи всі елементи в цьому списку однакові? - Функція
all()повертає True, якщо всі елементи в списку можуть бути перетворені на рядки. Інакше вона повертає False. - Функція
all()поверне всі значення в списку. - Функція
all()повертає True, якщо всі елементи в списку оцінюються як True. Інакше вона повертає False.
Пояснення: all() повертає True, якщо всі елементи в списку є True. Дивіться приклад нижче:
test = [True, False, False, False]
if all(test) is True:
print('Yeah, all of them are true.')
else:
print('There is an imposter.')
>>> 'There is an imposter'(Формат відповіді може відрізнятися. Game і roll (або dice_roll) повинні викликатися без параметрів.)
- A
>>> dice = Game()
>>> dice.roll()- B
>>> dice = Game(self)
>>> dice.roll(self)- C
>>> dice = Game()
>>> dice.roll(self)- D
>>> dice = Game(self)
>>> dice.roll()- Зворотний пошук (Backtracking)
- Динамічне програмування
- Зменшуй і перемагай (Decrease and conquer)
- Розділяй і владарюй (Divide and conquer)
І сортування злиттям, і швидке сортування використовують спільну алгоритмічну парадигму, засновану на рекурсії. Ця парадигма, розділяй і владарюй, розбиває проблему на підзадачі, подібні до початкової проблеми, рекурсивно вирішує підзадачі і, нарешті, об'єднує рішення підзадач для вирішення початкової проблеми. довідка
- O(1), також називається постійний час.
- O(log n), також називається логарифмічний час.
- O(n^2), також називається квадратичний час.
- O(n), також називається лінійний час.
Ця функція має постійну часову складність, тобто O(1), оскільки списки мають випадковий доступ, тому до останнього елемента можна дістатися за час O(1), тому час, необхідний для додавання нового елемента в кінець списку, становить O(1).
- Set - це впорядкована колекція унікальних елементів. List - це невпорядкована колекція неунікальних елементів.
- Елементи можна отримати зі списку, але їх не можна отримати з множини.
- Set - це впорядкована колекція неунікальних елементів. List - це невпорядкована колекція унікальних елементів.
- Set - це невпорядкована колекція унікальних елементів. List - це впорядкована колекція неунікальних елементів.
- Абстракція означає, що можна використовувати інший стиль коду, оскільки багато деталей вже відомі програмі за лаштунками.
- Абстракція означає, що реалізація прихована від користувача, і показуються тільки відповідні дані або інформація.
- Абстракція означає, що дані та функціональність класу об'єднані в одну сутність.
- Абстракція означає, що клас може успадковувати більше ніж від одного батьківського класу.
Абстракція в Python визначається як процес обробки складності шляхом приховування непотрібної інформації від користувача. довідка
def print_alpha_nums(abc_list, num_list):
for char in abc_list:
for num in num_list:
print(char, num)
return
print_alpha_nums(['a', 'b', 'c'], [1, 2, 3])- A
a 1
a 2
a 3
b 1
b 2
b 3
c 1
c 2
c 3- B
['a', 'b', 'c'], [1, 2, 3]- C
aaa
bbb
ccc
111
222
333- D
a 1 2 3
b 1 2 3
c 1 2 3- A
def sum(a, b):
# a = 1
# b = 2
# sum(a, b) = 3
return a + b- B
def sum(a, b):
"""
a = 1
b = 2
sum(a, b) = 3
"""
return a + b- C
def sum(a, b):
"""
>>> a = 1
>>> b = 2
>>> sum(a, b)
3
"""
return a + b- D
def sum(a, b):
'''
a = 1
b = 2
sum(a, b) = 3
'''
return a + bПояснення: Використовуйте """ для початку та закінчення docstring і використовуйте >>> для представлення виводу. Якщо ви напишете це правильно, ви також можете запустити doctest, використовуючи вбудований модуль doctest
Q37. Припустімо, клас Game успадковує від двох батьківських класів: BoardGame і LogicGame. Яке твердження є вірним щодо методів об'єкта, створеного з класу Game?
- При створенні об'єкта, об'єкт не успадковує жодного з методів батьківського класу.
- При створенні об'єкта, об'єкт успадкує методи того батьківського класу, у якого більше методів.
- При створенні об'єкта, програміст повинен вказати, від якого батьківського класу успадковувати методи.
- Екземпляр класу Game успадкує всі методи, які мають класи BoardGame і LogicGame.
- загальний клас об'єкта з ітерованими полями параметрів
- загальний клас об'єкта з неітерованими іменованими полями
- підклас кортежу з неітерованими полями параметрів
- підклас кортежу з ітерованими іменованими полями
Приклад
# namedtuple function accepts the following arguments to generate a class
from collections import namedtuple
>>> Point = namedtuple('Point',['x','y'])
>>> point = Point(100, 200)
>>> point
Point(x=100, y=200)
# Which lets you use both unpacking and iteration to access
>>> x, y = point
>>> print(f'({x}, {y})')
(100, 200)
>>> for coordinate in point:
print(coordinate)
100
200-
&& -
= -
== -
||
fruit_info = {
'fruit': 'apple',
'count': 2,
'price': 3.5
}-
fruit_info['price'] = 1.5 -
my_list[3.5] = 1.5 -
1.5 = fruit_info['price] -
my_list['price'] == 1.5
5 != 6
-
yes -
False -
True -
None
Пояснення: У Python, != еквівалентний не дорівнює.
- Він робить класи обізнаними один одного, якщо в одному файлі коду визначено більше одного класу.
- Він включений для збереження зворотної сумісності з Python 3 до Python 2, але він більше не потрібен у Python 3.
- Це метод, який діє як конструктор і викликається автоматично щоразу, коли з класу створюється новий об'єкт. Він встановлює початковий стан нового об'єкта.
- Він ініціалізує будь-які імпорти, які ви могли включити на початку вашого файлу.
Приклад:
class test:
def __init__(self):
print('I came here without your permission lol')
pass
t1 = test()
>>> 'I came here without your permission lol'-
Скільки мікропроцесорів знадобиться для запуску вашого коду менше ніж за одну секунду -
Скільки рядків коду є у вашому файлі коду -
Кількість місця, зайнятого в пам'яті, як функція розміру вхідних даних -
Скільки копій файлу коду може поміститися в 1 ГБ пам'яті
-
fruit_info = {'fruit': 'apple', 'count': 2, 'price': 3.5} -
fruit_info =('fruit': 'apple', 'count': 2,'price': 3.5 ).dict() -
fruit_info = ['fruit': 'apple', 'count': 2,'price': 3.5 ].dict() -
fruit_info = to_dict('fruit': 'apple', 'count': 2, 'price': 3.5)
Q45. Який правильний спосіб написати спискове включення, яке представляє всі ключі в цьому словнику?
fruits = {'Apples': 5, 'Oranges': 3, 'Bananas': 4}
-
fruit_names = [x in fruits.keys() for x] -
fruit_names = for x in fruits.keys() * -
fruit_names = [x for x in fruits.keys()] -
fruit_names = x for x in fruits.keys()
-
selfпосилається на клас, від якого було успадковано для створення об'єкта за допомогоюself. - Немає реальної мети для методу
self. Це просто старий комп'ютерний жаргон, який Python зберігає для узгодженості з іншими мовами програмування. -
selfозначає, що в метод не потрібно передавати інші аргументи. -
selfпосилається на екземпляр, метод якого був викликаний.
Пояснення: - Спробуйте запустити приклад з Q42 без передачі аргументу self всередину __init__, і ви зрозумієте причину.
- Метод класу - це звичайна функція, яка належить класу, але вона повинна повертати None.
- Метод класу може змінювати стан класу, але він не може безпосередньо змінювати стан екземпляра, який успадковує від цього класу.
- Метод класу подібний до звичайної функції, але метод класу не приймає жодних аргументів.
- Метод класу зберігає всі дані для конкретного класу.
- Ви не використовували багато передових концепцій комп'ютерного програмування у вашому коді.
- Рівень складності, на якому написаний ваш код, не такий високий.
- Ваша програма виконається менше ніж за пів секунди.
- Час, необхідний для завершення функції, зростає лінійно зі збільшенням розміру вхідних даних.
-
def getMaxNum(list_of_nums): # body of function goes here -
func get_max_num(list_of_nums): # body of function goes here -
func getMaxNum(list_of_nums): # body of function goes here -
def get_max_num(list_of_nums): # body of function goes here
- у верблюжому регістрі без використання підкреслень для розділення слів -- наприклад
maxValue = 255 - у нижньому регістрі з підкресленнями для розділення слів -- наприклад
max_value = 255 - усіма великими літерами з підкресленнями, що розділяють слова -- наприклад
MAX_VALUE = 255 - у змішаному регістрі без використання підкреслень для розділення слів -- наприклад
MaxValue = 255
- Deque додає елементи з одного боку і видаляє елементи з іншого боку.
- Deque додає елементи з одного або обох боків, але видаляє елементи тільки зверху.
- Deque додає елементи з одного або обох кінців і видаляє елементи з одного або обох кінців.
- Deque додає елементи тільки зверху, але видаляє їх з одного або обох боків.
-
my_set = {0, 'apple', 3.5} -
my_set = to_set(0, 'apple', 3.5) -
my_set = (0, 'apple', 3.5).to_set() -
my_set = (0, 'apple', 3.5).set()
- :
class __init__(self):
pass- :
def __init__():
pass- :
class __init__():
pass- :
def __init__(self):
passQ54. Яке з наступних тверджень є ІСТИННИМ щодо того, як числові дані будуть організовані в бінарному дереві пошуку?
- Для будь-якого вузла в бінарному дереві пошуку значення вузла більше за всі значення в лівому піддереві вузла і менше за значення в його правому піддереві.
- Бінарне дерево пошуку не може бути використане для організації і пошуку числових даних.
- Верхній вузол бінарного дерева пошуку буде довільним числом.
- Найменше числове значення піде в верхній вузол.
- Декоратор подібний до класу і повинен використовуватися, якщо ви займаєтеся функціональним програмуванням.
- Декоратор - це візуальний індикатор для того, хто читає ваш код.
- Ви використовуєте декоратор для зміни функціональності функції без необхідності змінювати код функції.
- Оператор import передує декоратор.
- Тільки в деяких ситуаціях, оскільки цикли використовуються тільки для певних типів програмування.
- Коли вам потрібно перевірити кожен елемент в ітерованому об'єкті відомої довжини.
- Коли ви хочете мінімізувати використання рядків у вашому коді.
- Коли ви хочете запустити код в одному файлі для функції в іншому файлі.
Q57. Який найбільш самоописувальний спосіб визначення функції, яка обчислює податок з продажу на покупку?
- A
- B
- C
- D:
def calculate_sales_tax(subtotal): pass
- Вам не потрібно змінювати стан елемента, на якому алгоритм рекурсує.
- Ви зрештою отримаєте KeyError.
- Ви отримаєте RuntimeError: maximum recursion depth exceeded.
- Функція, яка використовує рекурсію, поверне None.
- Час виконання пошуку в бінарному дереві пошуку становить O(1).
- Час виконання пошуку в бінарному дереві пошуку становить O(n!).
- Час виконання пошуку в бінарному дереві пошуку зазвичай становить O(h), де h - висота дерева.
- Час виконання пошуку в бінарному дереві пошуку становить O(n).
- Ви використовуєте mixin, щоб змусити функцію прийняти аргумент під час виконання.
- Ви використовуєте mixin, щоб дозволити декоратору приймати ключові аргументи.
- Ви використовуєте mixin, щоб переконатися, що атрибути та методи класу не заважають глобальним змінним і функціям.
- Якщо у вас є багато класів, які потребують однакової функціональності, ви б використовували mixin для визначення цієї функціональності.
- Додавання елементів до стеку за час O(1) і видалення елементів зі стеку за час O(n).
- Додавання елементів до стеку за час O(1) і видалення елементів зі стеку за час O(1).
- Додавання елементів до стеку за час O(n) і видалення елементів зі стеку за час O(1).
- Додавання елементів до стеку за час O(n) і видалення елементів зі стеку за час O(n).
- стек додає елементи з одного боку і видаляє елементи з іншого боку.
- стек додає елементи зверху і видаляє елементи зверху.
- стек додає елементи зверху і видаляє елементи з будь-якого місця в стеку.
- стек додає елементи з будь-якого кінця і видаляє елементи з будь-якого кінця.
Пояснення: Стек використовує підхід останнім прийшов - першим вийшов.
- Базовий випадок - це умова, яка дозволяє алгоритму припинити рекурсію. Зазвичай це проблема, достатньо мала, щоб вирішити її безпосередньо.
- Базовий випадок - це резюме загальної проблеми, яку потрібно вирішити.
- Базовий випадок передається як аргумент функції, тіло якої використовує рекурсію.
- Базовий випадок подібний до базового класу в тому, що він може бути успадкований іншим об'єктом.
Q64. Чому вважається хорошою практикою відкривати файл з Python-скрипта за допомогою ключового слова with?
- Ключове слово
withдозволяє вибрати, в якому додатку відкрити файл. - Ключове слово
withдіє як циклforі дозволяє отримати доступ до кожного рядка у файлі по одному. - Немає переваг у використанні ключового слова
withдля відкриття файлу в Python. - Коли ви відкриваєте файл за допомогою ключового слова
withу Python, Python переконається, що файл закривається, навіть якщо виникає виняток або помилка.
- Віртуальні середовища створюють "бульбашку" навколо вашого проекту, щоб будь-які бібліотеки або пакети, які ви встановлюєте в ньому, не впливали на всю вашу машину.
- Команди з віддаленими співробітниками використовують віртуальні середовища, щоб вони могли ділитися кодом, робити огляди коду та співпрацювати віддалено.
- Віртуальні середовища були поширені в Python 2, оскільки вони доповнювали відсутні функції в мові. Віртуальні середовища не потрібні в Python 3 через вдосконалення мови.
- Віртуальні середовища прив'язані до вашого облікового запису GitHub або Bitbucket, що дозволяє вам отримувати доступ до будь-якого з ваших репозиторіїв віртуально з будь-якої машини.
-
python3 -m doctest <_filename_> -
python3 <_filename_> -
python3 <_filename_> rundoctests -
python3 doctest
- будь-яка функція, яка використовує наукові або математичні константи, часто представлені грецькими літерами в академічних роботах
- функція, яка виконується, коли використовуються декоратори
- будь-яка функція, визначення якої міститься в п'яти рядках коду або менше
- невелика анонімна функція, яка може приймати будь-яку кількість аргументів, але має лише один вираз для оцінки
- Ви можете отримати доступ до конкретного елемента в списку, індексуючи його позицію, але ви не можете отримати доступ до конкретного елемента в кортежі, якщо не ітеруєте через кортеж
- Списки є змінюваними, тобто ви можете змінювати дані всередині них у будь-який час. Кортежі є незмінними, тобто ви не можете змінювати дані всередині них після створення кортежу.
- Списки є незмінними, тобто ви не можете змінювати дані всередині них після створення списку. Кортежі є змінюваними, тобто ви можете змінювати дані всередині них у будь-який час.
- Списки можуть містити кілька типів даних одночасно, але кортежі можуть містити лише один і той же тип даних, якщо присутні кілька елементів.
- None
- Ітерований об'єкт
- Структуру даних зв'язаного списку з непорожнього списку
- Всі ключі даного словника
- Атрибути екземпляра можна змінювати, але атрибути класу не можна змінювати
- Атрибути класу спільні для всіх екземплярів класу. Атрибути екземпляра можуть бути унікальними лише для цього екземпляра
- Немає різниці між атрибутами класу та атрибутами екземпляра
- Атрибути класу належать лише класу, а не екземпляру цього класу. Атрибути екземпляра спільні для всіх екземплярів класу
- :
def get_next_card():
# method body goes here- :
def get_next_card(self):
# method body goes here- :
def self.get_next_card():
# method body goes here- :
def self.get_next_card(self):
# method body goes here-
get_max_num([57, 99, 31, 18]) -
call.(get_max_num) -
def get_max_num([57, 99, 31, 18]) -
call.get_max_num([57, 99, 31, 18])
-
-- This is a comment -
# This is a comment -
/* This is a comment */ -
// This is a comment
my_list = ['kiwi', 'apple', 'banana']-
orange = my_list[1] -
my_list[1] = 'orange' -
my_list['orange'] = 1 -
my_list[1] == orange
Q75. Що станеться, якщо ви використовуєте цикл while і забудете включити логіку, яка зрештою призводить до зупинки циклу while?
- Нічого не станеться; ваш комп'ютер знає, коли припинити виконання коду в циклі while.
- Ви отримаєте KeyError.
- Ваш код застрягне в нескінченному циклі.
- Ви отримаєте WhileLoopError.
- Черга додає елементи з будь-якого кінця і видаляє елементи з будь-якого кінця.
- Черга додає елементи зверху і видаляє елементи зверху.
- Черга додає елементи зверху і видаляє елементи з будь-якого місця в списку.
- Черга додає елементи зверху і видаляє елементи з будь-якого місця в черзі.
- A
- B
- C
- D
-
defaultdictавтоматично створить для вас словник, який має ключі, які є цілими числами 0-10. -
defaultdictзмушує словник приймати тільки ключі типів, вказаних при створенніdefaultdict. - Якщо ви спробуєте прочитати з
defaultdictнеіснуючий ключ, для вас буде створена нова пара ключ-значення за замовчуванням замість викиданняKeyError. -
defaultdictзберігає копію словника в пам'яті, до якої ви можете повернутися за замовчуванням, якщо оригінал буде ненавмисно змінений.
Q79. Який правильний синтаксис для додавання ключа під назвою variety до словника fruit_info, який має значення Red Delicious?
-
fruit_info['variety'] == 'Red Delicious' -
fruit_info['variety'] = 'Red Delicious' -
red_delicious = fruit_info['variety'] -
red_delicious == fruit_info['variety']
- Коли ви хочете мінімізувати використання рядків у вашому коді.
- Коли ви хочете запустити код в одному файлі, поки код в іншому файлі також виконується.
- Коли ви хочете, щоб якийсь код продовжував виконуватися, доки якась умова є істинною.
- Коли вам потрібно запустити два або більше фрагментів коду одночасно в одному файлі.
Q81. Який правильний синтаксис для визначення методу __init__(), який встановлює атрибути, специфічні для екземпляра, під час створення нового екземпляра класу?
- :
def __init__(self, attr1, attr2):
attr1 = attr1
attr2 = attr2- :
def __init__(attr1, attr2):
attr1 = attr1
attr2 = attr2- :
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.attr2 = attr2- :
def __init__(attr1, attr2):
self.attr1 = attr1
self.attr2 = attr2def count_recursive(n=1):
if n > 3:
return
print(n)
count_recursive(n + 1)- :
1 1 2 2 3 3 - :
3 2 1 - :
3 3 2 2 1 1 - :
1 2 3
Q83. У Python, при роботі з множинами, ви використовуєте _ для обчислення перетину між двома множинами і _ для обчислення об'єднання.
-
Intersect;union -
|;& -
&;| -
&&;||
import numpy as np
np.ones([1,2,3,4,5])- Він повертає матрицю 5x5; кожен рядок матиме значення 1,2,3,4,5.
- Він повертає масив зі значеннями 1,2,3,4,5.
- Він повертає п'ять різних квадратних матриць, заповнених одиницями.
- Він повертає 5-вимірний масив розміром 1x2x3x4x5, заповнений одиницями.
Q85. Ви зіткнулися з FileNotFoundException при використанні лише імені файлу в функції open. Яке може бути найпростіше рішення?
- Переконайтеся, що файл знаходиться в системному
PATH. - Створіть символічне посилання для кращого доступу до файлу.
- Скопіюйте файл у той самий каталог, з якого запускається скрипт.
- Додайте шлях до файлу до змінної середовища
PYTHONPATH.
{x for x in range(100) if x%3 == 0}- Множину всіх кратних 3 менше 100.
- Множину всіх чисел від 0 до 100, помножених на 3.
- Список всіх кратних 3 менше 100.
- Множину всіх кратних 3 менше 100, за винятком 0.
- Виконувати цілочислове ділення.
- Виконувати операції з експонентами.
- Знайти залишок від операції ділення.
- Виконувати ділення з плаваючою точкою.
-
datetime -
dateday -
daytime -
timedate
-
def Game(): pass -
def Game: pass -
class Game: pass -
class Game(): pass
-
my_game = Game(self) self.my_game.roll_dice() -
my_game = Game() self.my_game.roll_dice() -
my_game = Game() my_game.roll_dice() -
my_game = Game(self) my_game.roll_dice(self)
a = np.array([1,2,3,4])
print(a[[False, True, False, False]])-
{0,2} -
[2] -
{2} -
[0,2,0,0]
Q92. Припустімо, у вас є рядкова змінна, визначена як y="stuff;thing;junk;". Який буде вивід цього коду?
z = y.split(';')
len(z)- 17
- 4
- 0
- 3
num_list = [1,2,3,4,5]
num_list.remove(2)
print(num_list)-
[1,2,4,5] -
[1,3,4,5] -
[3,4,5] -
[1,2,3]
Пояснення: .remove() базується на значенні елемента, а не на індексі; тут він видаляє елемент, що відповідає "2".
[10,9,8,7,6,5,4,3,2,1]
-
reversed(list(range(1,11))) -
list(reversed(range(1,10))) -
list(range(10,1,-1)) -
list(reversed(range(1,11)))
import math
print(math.pow(2,10))- :
print(2^10) - :
print(2**10) - :
y = [x*2 for x in range(1,10)] print(y) - :
y = 1 for i in range(1,10): y = y * 2 print(y)
- тільки множини; списки або словники; кортежі
- списки; тільки множини; кортежі
- кортежі; множини або списки; словники
- списки; словники або множини; кортежі
table = np.array([
[1,3],
[2,4]])
print(table.max(axis=1))-
[2, 4] -
[3, 4] -
[4] -
[1,2]
number = 3
print(f"The number is {number}")-
The number is 3 -
the number is 3 -
THE NUMBER IS 3 - Він викидає
TypeError, оскільки ціле число повинно бути перетворене на рядок.
-
my_tuple tup(2, 'apple', 3.5) -
my_tuple [2, 'apple', 3.5].tuple() -
my_tuple = (2, 'apple', 3.5) -
my_tuple = [2, 'apple', 3.5]
-
write('w') -
scan('s') -
append('a') -
read('r')
- Векторизації.
- Атрибуцій.
- Прискорення.
- Функціонального програмування.
-
set -
list -
tuple -
dictionary
-
sys.exc_info() -
os.system() -
os.getcwd() -
sys.executable
Q104. Припустімо, у вас є наступний фрагмент коду, і ви хочете витягти список тільки з літерами. Який фрагмент коду _не_ досягне цієї мети?
my_dictionary = {
'A': 1,
'B': 2,
'C': 3,
'D': 4,
'E': 5
}-
letters = [] for letter in my_dictionary.values(): letters.append(letter) -
letters = my_dictionary.keys() -
letters = [letter for (letter, number) in my_dictionary.items()] -
letters4 = list(my_dictionary)
Пояснення: Перший варіант повертає список значень (чисел). Решта варіантів повертають список ключів.
Q105. Коли масив великий, NumPy не буде друкувати весь масив при використанні вбудованої функції print. Яку функцію ви можете використовувати в NumPy, щоб змусити його надрукувати весь масив?
-
set_printparams -
set_printoptions -
set_fullprint -
setp_printwhole
- Ви використовуєте блоки
try/except, коли хочете запустити якийсь код, але потребуєте спосіб виконати інший код, якщо виникає виняток. - Ви використовуєте блоки
try/exceptвсередині модульних тестів, щоб модульні тести завжди проходили. - Ви використовуєте блоки
try/except, щоб продемонструвати рецензентам коду, що ви спробували новий підхід. - Ви використовуєте блоки
try/except, щоб жодна з ваших функцій або методів не поверталаNone.
-
через рівень відступу після циклу for -
через ключове слово end в кінці циклу for -
через те, що блок оточений фігурними дужками ({}) -
через порожній пробіл в кінці тіла циклу for
Q108. Який механізм Python найкраще підходить для повідомлення користувача, що він використовує застарілу функцію?
-
sys.stdout - Traceback
- Warnings
- Exceptions
x = {1,2,3,4,5}
x.add(5)
x.add(6)-
{1, 2, 3, 4, 5, 5, 6} -
{5, 6, 1, 2, 3, 4, 5, 6} -
{6, 1, 2, 3, 4, 5} -
{1, 2, 3, 4, 5, 6}
Пояснення: Метод .add() додає елемент до множини тільки якщо він ще не існує.
fruit_info = {
'fruit': 'apple',
'count': 2,
'price': 3.5
}-
my_keys = fruit_info.to_keys() -
my_keys = fruit_info.all_keys() -
my_keys = fruit_info.keys -
my_keys = fruit_info.keys()
def be_friendly(greet = "How are you!", name):
pass-
nameє зарезервованим словом. - Підкреслення не дозволені в іменах функцій.
- Аргумент без значення за замовчуванням слідує за аргументом зі значенням за замовчуванням.
- З цим визначенням функції нічого не так.
- :
a = np.zeros([3,4]) b = a.copy() np.array_equal(a,b) - :
a = np.empty([3,4]) b = np.empty([3,4]) np.array_equal(a,b) - :
a = np.zeros([3,4]) b = np.zeros([4,3]) np.array_equal(a,b) - :
a = np.array([1, np.nan]) np.array_equal(a,a)
-
// This is a comment -
# This is a comment -
-- This is a comment -
/* This is a comment *\
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = a*b
d = np.dot(a,b)- A:
c = [ a[1] * b[1], a[2] * b[2], a[3] * b[3] ] d = sum(c) - B:
c = a[0] * b[0], a[1] * b[1], a[2] * b[2] d = [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ] - C:
c = [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ] d = sum(a) + sum(b) - D:
c = [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ] d = sum(c)
Q115. Які дві функції в бібліотеці NumPy ви могли б використати для вирішення системи лінійних рівнянь?
-
linalg.eig() and .matmul() -
linalg.inv() and .dot() -
linalg.det() and .dot() -
linalg.inv() and .eye()
-
my_list = (2, 'apple', 3.5) -
my_list = [2, 'apple', 3.5] -
my_list = [2, 'apple', 3.5].to_list() -
my_list = to_list(2, 'apple', 3.5)
num_list = [21, 13, 19, 3, 11, 5, 18]
num_list.sort()
num_list[len(num_list) // 2]- моду
- середнє
- середнє арифметичне
- медіану
- Arrays і DataFrames
- Series і Matrixes
- Matrixes і DataFrames
- Series і DataFrames
Q119. Припустімо, у вас є змінна під назвою vector типу np.array з 10,000 елементів. Як ви можете перетворити vector на змінну під назвою matrix з розмірами 100x100?
-
matrix = (vector.shape = (100,100)) -
matrix = vector.to_matrix(100,100) -
matrix = matrix(vector,100,100) -
matrix = vector.reshape(100, 100)
- Dictionary
- List
- Set
- String
def myFunction(country = "France"):
print(f"Hello, I am from {country}")
myFunction("Spain")
myFunction("")
myFunction()- :
Hello, I am from Spain Hello, I am from Hello, I am from - :
Hello, I am from France Hello, I am from France Hello, I am from France - :
Hello, I am from Spain Hello, I am from Hello, I am from France - :
Hello, I am from Spain Hello, I am from France Hello, I am from France
- Анонімний клас
- Батьківський клас
- Вкладений клас
- Абстрактний клас
Q123. Використовуючи Pandas, ми завантажуємо набір даних з Kaggle. Яка команда поверне загальну кількість вижилих?
-
sum(titanic['Survived']) -
[x for x in titanic['Survived'] if x == 1] -
len(titanic["Survived"]) -
sum(titanic['Survived']==0)
characters = ["Iron Man", "Spider Man", "Captain America"]
actors = ["Downey", "Holland", "Evans"]-
[(x,y)] for x in characters for y in actors] -
zip(characters, actors) -
d = {} for x in range(1, len(characters)): d[x] = actors[x] -
{x:y for x in characters for y in actors}
{x : x*x for x in range(1,100)}- Словник з
xяк ключем іxу квадраті як його значенням; від 1 до 100. - Словник з
xяк ключем іxу квадраті як його значенням; від 1 до 99. - Множину кортежів, що складаються з (
x,xу квадраті); від 1 до 99. - Список з усіма числами у квадраті від 1 до 99.
Q126. Подібність Jaccard - це формула, яка показує, наскільки подібні дві множини. Який вибір є точною реалізацією в Python?
-
def jaccard(a, b): return len (a | b) / len (a & b) -
def jaccard(a, b): return len (a & b) / len (a | b) -
def jaccard(a, b): return len (a && b) / len (a || b) -
def jaccard(a, b): return a.intersection(b) / a.union(b)
- Long
- Int
- Float
- Double
[1,2,3] * 3-
[3,2,3] -
[1, 2, 3, 1, 2, 3, 1, 2, 3] - Ви отримаєте помилку типу.
-
[3,6,9]
- 1
- 3
- 2
- Викидається виняток IndexError.
- Рядки можуть бути оточені подвійними лапками (") або одинарними лапками (').
- Рядки можуть бути оточені тільки одинарними лапками (').
- Односимвольні рядки повинні бути оточені одинарними лапками ('), а решта повинна бути оточена подвійними лапками (").
- Рядки можуть бути оточені тільки подвійними лапками (").
-
def __init__(self): pass -
class __init__(self): pass -
class __init__(): pass -
def __init__(): pass
Q132. Припустімо, вам потрібно використовувати функцію sin з бібліотеки math. Який правильний синтаксис для імпорту тільки цієї функції?
-
using math.sin -
import math.sin -
from math import sin -
import sin from math
-
0 -
кількість всіх значень True -
помилку типу -
None
print("foo" if (256).bit_length() > 8 else "bar")-
True -
foo - Ви отримаєте повідомлення про помилку, оскільки постійні цілі значення не є класами.
-
bar
- Якщо ключове слово return відсутнє, функція поверне
True. - Функція ввійде в нескінченний цикл, оскільки вона не знатиме, коли припинити виконання свого коду.
- Функція поверне
RuntimeError, якщо ви не повернете значення. - Якщо ключове слово return відсутнє, функція поверне
None.
- рядкових; числових
- неструктурованих; структурованих
- числових; табличних
- табличних; числових
- Використовувати компілятор C, такий як
gccабоclang. - Використовувати менеджер пакетів, такий як
pipабоconda. - Використовувати IDE, таке як Notepad++ або Idle.
- Використовувати менеджер пакетів, такий як NPM або NuGet.
Q138. Зображення нижче було створено за допомогою Matplotlib. Це графік розподілу списку цілих чисел, заповнених числами за допомогою функції _ і побудованих за допомогою _.
-
random.uniform(0,50);plt.hist -
random.gauss(50,20);plt.hist -
random();plt.scatter -
random.triangular(0,50);plt.bar
import numpy as np
a = np.arange(100)
b = a[50:60:2]-
a: всі цілі числа від 0 до 99 (включно);b: всі парні числа від 50 до 58 (включно). -
a: всі цілі числа від 0 до 100 (включно);b: всі парні числа від 50 до 60 (включно). -
a: всі цілі числа від 0 до 99 (включно);b: всі парні числа від 50 до 60 (включно). -
a: всі цілі числа від 0 до 99 (включно);b: всі непарні числа від 49 до 59 (включно).
Q140. При використанні NumPy у Python, як перевірити розмірність (кількість і довжину вимірів) об'єкта під назвою my_object?
-
my_object.get_shape() -
my_object.shape -
my_object.dim() -
len(my_object)
Q141. Припустімо, у вас є непорожній список під назвою mylist, і ви хочете знайти конкретне значення. Мінімальна кількість порівнянь буде _, а максимальна кількість порівнянь буде _?
-
len(mylist); len(mylist) -
1; len(mylist) -
2; len(mylist) -
0; len(mylist)
-
0 -
True -
None -
False
Q143. Припустімо, ви хочете перевірити, чи можна перемножити дві матриці за допомогою NumPy. Як би ви заповнили пропуски відповідними змінними?
import numpy as np
def can_matrices_be_multiplied (matrix1, matrix2):
rowsMat1, columnsMat1 = matrix1.shape
rowsMat2, columnsMat2 = matrix2.shape
if _____ == ______ :
print("The matrices can be multiplied!")
return True
else:
return False- columnsMat1; rowsMat1;
- columnsMat1; rowsMat2;
- columnsMat1; columnsMat2;
- columnsMat2; rowsMat1;
[(x, x+1) for x in range(1,5)]
- [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
- [1,2,3,4,5]
- [(1, 2), (2, 3), (3, 4)]
- [(1, 2), (2, 3), (3, 4), (4, 5)]
Q145. У Python метод класу повинен мати _ як декоратор функції, і перший параметр методу буде посиланням на _.
- @classmethod; клас
- inline; клас
- static; self
- @static; self
- :
class Father(): name = 'Robert' class Person(Father): def __init__(self, name): self.fathername = super.name - :
class Father(): name = 'Robert' class Person(Father): def __init__(self, name): self.fathername = self.name - :
class Father(): name = 'Robert' class Person(Father): def __init__(self, name): self.name = name def introduce(self): print(f"My name is {self.name} son of {super.name}") - :
class Father(): name = 'Robert' class Person(Father): def __init__(self, name): self.name = name def introduce(self): print(f"My name is {self.name} son of {base.name}")
animals = {
'a': ['ant', 'antelope', 'armadillo'],
'b': ['beetle', 'bear', 'bat'],
'c': ['cat', 'cougar', 'camel']
}
animals = defaultdict(list, animals)
print(animals['b'])
print(animals['d'])- A:
['beetle', 'bear', 'bat'] [] - B:
['beetle', 'bear', 'bat'] # an exception will be thrown - C:
['beetle', 'bear', 'bat'] None - D:
['bat', 'bear', 'beetle'] []
[x*2 for x in range(1,n)]- Список з усіма парними числами менше 2*n.
- Словник з усіма парними числами менше 2*n.
- Список з усіма непарними числами менше 2*n.
- Список з усіма парними числами менше або дорівнює 2*n.
x = 18
if x > 10:
if x > 15:
print('A')
else:
print('B')
else:
print('C')- C
- A B
- B
- A
- 32
- 16
- 128
- Не вказано фіксованої довжини.
for i in range(5): pass- 5
- Змінна стає недоступною.
- 6
- 4
- Форматовані рядкові вирази.
- Функціональні рядки.
- Рядки з форматуванням modulo.
- Форматовані рядкові літерали.
- Один.
- Всі доступні процесори.
- Два.
- Три.
x = 5
y = 1 + (20 if x < 5 else 30)-
False -
21 -
2 -
31
- Перетворення ієрархії об'єктів Python у потік байтів.
- Перетворення таблиці даних у список.
- Перетворення потоку байтів в ієрархію об'єктів Python.
- Перетворення списку в таблицю даних.
print("codescracker".endswith("er"))-
True -
1 -
2 -
False
- True
- False
print("programming".center())-
cr -
programming - Помилка
TypeError: center expected at least 1 argument, got 0. - Жоден з наведених вище.
- Tim Berners-Lee
- Ada Lovelace
- Guido van Rossum
- Alan Turing
- Set
- Tuple
- Dictionary
- List
x = 1j
print(x**2 == -1)- Помилка виконання, що повідомляє, що змінна
jне була ініціалізована. -
True -
1j -
False
print(0xA + 0xB + 0xC)-
33 -
63 -
0xA + 0xB + 0xC -
None
for i in range(5):
print(i)
else:
print("Done!")- A:
1 2 3 4 5 Done! - B:
0 1 2 3 4 5 Done! - C:
0 1 2 3 4 Done! - D: Ви отримаєте синтаксичну помилку.
- Використовуйте списки замість кортежів, коли у вас є колекція пов'язаних, але різних об'єктів.
- Використовуйте кортежі замість списків, коли у вас є загальна колекція подібних об'єктів.
- Використовуйте кортежі замість списків для функцій, які повинні повертати кілька значень.
- Використовуйте списки замість кортежів, коли позиція елементів важлива.
Q165. Розгляньте наступний фрагмент коду, який використовує декоратори для обчислення часу виконання функції execution_fn. Які відсутні аргументи?
import functools
import time
def timer(MISSING_ARG_1):
@functools.wraps(func)
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
rval = func(*args, **kwargs)
end_time = time.perf_counter()
duration = end_time - start_time
print(f"Executed in {duration:.4f} seconds")
return MISSING_ARG_2
return MISSING_ARG_3- :
MISSING_ARG_1 = wrapper, MISSING_ARG_2 = rval, MISSING_ARG_3 = func - :
MISSING_ARG_1 = func, MISSING_ARG_2 = rval, MISSING_ARG_3 = wrapper - :
MISSING_ARG_1 is empty, MISSING_ARG_2 = rval, MISSING_ARG_3 = wrapper - :
MISSING_ARG_1 is empty, MISSING_ARG_2 = rval, MISSING_ARG_3 = func
-
class Dog: -
Dog class: -
Dog: -
class Dog
-
preprocessing -
pipeline -
filters -
pipe_filter
Q168. Ви повинні передати значення _ для аргументу axis методу Pandas apply, щоб застосувати функцію до кожного рядка.
- row
- col
- 1
- 0
- ... pointers.
- ... points.
- ... markers.
- ... жоден з цих.
a = np.array([[1, 2], [3, 4], [5, 6]])
c = a[(a > 3) & (a < 11)]
print(c)-
[[3, 4], [5, 6]] -
[False, False, False, True, True, True] -
[[0,0], [3, 4], [5, 6]] -
[4 5 6]
Q171. Припустімо, m, n і p є додатними цілими числами. У наступному comprehension, скільки разів буде викликана функція randint?
[ [ [ randint(1,100) for i in range(m) ] for j in range(n) ] for k in range(p) ]-
m * n * p - Більше значення з
(m,n,p). - 1 мільйон.
-
m + n + p
Q172. Припустімо, у вас є клас під назвою MyClass, який має множинне успадкування та методи з однаковими іменами в його предках. Який метод класу ви могли б викликати, щоб побачити, який метод отримає пріоритет при виклику?
-
MyClass.__mro__ -
MyClass.hierarchy() -
callable(MyClass) -
dir(MyClass)
Q173. Припустімо, у вас є список співробітників, описаний кодом нижче. Ви хочете призначити Alice таку саму зарплату, як у Charlie. Який вибір це зробить?
employees = {
'alice':{
'position':'Lead Developer',
'salary':1000
},
'bob':{
'position': 'Lead Artist',
'salary':2000
},
'charlie':{
'position':'cfo',
'salary':3000
}
}-
employees['alice']['salary'] = employees['charlie']['salary'] -
employees.alice.salary = employees.charlie.salary -
employees['alice'][1] = employees['charlie'][1] -
employees['alice'].salary = employees['charlie'].salary
Q174. Вам надано цей фрагмент коду. Припустімо, m і n вже визначені як деякі додатні цілі значення. Коли він завершиться, скільки кортежів міститиме mylist?
mylist = []
for i in range(m):
for j in range(n):
mylist.append((i,j))-
m -
m + n -
n -
m * n
{x : [y for y in range (1, x) if x % y == 0] for x in range (2, 100)}- Словник, ключами якого є числа від 2 до 99 (включно), а їх відповідні значення - їх дільники.
- Словник, ключами якого є числа від 2 до 99 (включно), а їх відповідні значення - список від 1 до самого ключа (включно).
- Словник, ключами якого є числа від 2 до 99 (включно), а їх відповідні значення - парні числа від 1 до самого ключа (включно).
- Словник, ключами якого є числа від 2 до 99 (включно), а їх відповідні значення - непарні числа від 1 до самого ключа (включно).
- зробити знімок усіх пакетів і бібліотек у вашому віртуальному середовищі
- з'єднати різні системи, такі як веб-інтерфейс, API-сервіс, базу даних і мобільний додаток
- захопити аргументи командного рядка, надані під час виконання файлу
- сканувати стан вашої екосистеми Python всередині віртуального середовища
- 17
- 15
- 2
- 16
Q178. Нехай списки 'characters' і 'actors' визначені як задано. Який з наступних рядків коду дає бажаний вивід?
characters = ["Iron Man", "Spider Man", "Captain America"]
actors = ["Downey", "Holland", "Evans"]
#Desired output : [("Iron Man", "Downey"), ("Spider Man", "Holland"), ("Captain America", "Evans")]- print( zip( characters, actors ) )
- print( { x: y for x in characters for y in actors } )
- print( [ ( x, y ) for x in characters for y in actors ] )
- print( list( zip( characters, actors ) ) )
- Завжди, оскільки він потрібен у кожному Python-скрипті.
- Тільки коли скрипт виконується безпосередньо з командного рядка або як основна програма.
- Тільки коли скрипт містить синтаксичні помилки.
- Тільки коли скрипт імпортується як модуль в іншому скрипті.
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
result = list(squared_numbers)
print(result)-
[1, 4, 9, 16, 25] -
[1, 2, 3, 4, 5] -
[1, 8, 27, 64, 125] -
[2, 4, 6, 8, 10]
- int
- string
- boolean
- array
- int
- char
- float
- str
- input()
- read_line()
- console_input()
- getline()
print("Hello {name1} and {name2}".format(name1='foo', name2='bin'))
- Hello foo and bin
- Hello {name1} and {name2}
- Error
- Hello and
def outer_func(x):
y = x + 1
def inner_func():
return y + x
return inner_func
x = 10
y = 20
closure_func = outer_func(x)
print(closure_func())- 30
- 21
- 11
- 31
x = 5
def func():
x = 10
print(x)
func()
print(x)- 10, 5
- 10, 10
- 5, 5
- 5, 10
def func(a, b=2, c=3):
print(a, b, c)
func(10)
func(10, 20)
func(10, 20, 30)- 10 2 3, 10 20 3, 10 20 30
- 10 2 3, 10 2 3, 10 2 3
- 10 2 3, 10 20 2, 10 20 30
- 10 2 3, 10 20 3, 10 20 30
x = [1, 2, 3]
y = x
y.append(4)
print(x)- [1, 2, 3]
- [1, 2, 3, 4]
- [4, 1, 2, 3]
- Error
def add_item(item, item_list=[]):
item_list.append(item)
return item_list
print(add_item(1))
print(add_item(2))
print(add_item(3, []))- [1] [2] [3]
- [1] [1,2] [3]
- [1,2,3] [1,2,3] [3]
- [1] [2] [3,1,2]
-
__length__() -
__len__() -
__size__() -
__count__()
def decorator(func):
def wrapper(*args, **kwargs):
print("Before function call")
result = func(*args, **kwargs)
print("After function call")
return result
return wrapper
@decorator
def greet(name):
print(f"Hello, {name}!")
greet("Alice")-
Before function call,Hello, Alice!,After function call -
Hello, Alice! -
Before function call,After function call -
decorator
- Генератори зберігають всі значення в пам'яті одночасно
- Генератори виробляють значення за запитом, використовуючи ключове слово
yield - Генератори можуть бути створені тільки за допомогою list comprehensions
- Генератори не можуть бути ітеровані кілька разів
class Parent:
def method(self):
print("Parent method")
class Child(Parent):
def method(self):
super().method()
print("Child method")
obj = Child()
obj.method()-
Parent method,Child method -
Child method,Parent method -
Child method -
Parent method
-
__str__() -
__repr__() -
__format__() -
__debug__()
from functools import lru_cache
@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10))
print(fibonacci.cache_info())-
55і статистику кешу -
55іNone -
RecursionError -
TypeError
- Він може використовуватися тільки з файловими об'єктами
- Він забезпечує належне очищення ресурсів, викликаючи метод
__exit__ - Він створює нову область видимості для змінних
- Він може використовуватися тільки один раз на програму
class Counter:
def __init__(self):
self.count = 0
def __call__(self):
self.count += 1
return self.count
counter = Counter()
print(counter())
print(counter())
print(counter.count)-
1,2,2 -
0,1,2 -
1,1,1 -
TypeError
-
__in__() -
__contains__() -
__has__() -
__includes__()
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
def distance_from_origin(self):
return (self.x ** 2 + self.y ** 2) ** 0.5
p = Point(3, 4)
print(p)
print(p.distance_from_origin())-
Point(x=3, y=4)і5.0 -
<Point object>і5.0 -
Point(3, 4)і5 -
SyntaxError
- GIL дозволяє справжній паралелізм для завдань, прив'язаних до CPU
- GIL запобігає одночасному виконанню Python-байткоду кількома рідними потоками
- GIL впливає тільки на операції вводу-виводу
- GIL може бути вимкнений у Python
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
a = Singleton()
b = Singleton()
print(a is b)
print(id(a) == id(b))-
TrueіTrue -
FalseіFalse -
TrueіFalse -
FalseіTrue
-
__iterate__() -
__iter__()і__next__() -
__loop__() -
__foreach__()
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED)
print(Color.RED.name)
print(Color.RED.value)-
Color.RED,RED,1 -
1,RED,Color.RED -
RED,1,Color.RED -
<Color.RED: 1>,RED,1
-
*argsзахоплює іменовані аргументи,**kwargsзахоплює позиційні аргументи -
*argsзахоплює позиційні аргументи,**kwargsзахоплює іменовані аргументи - Обидва захоплюють однаковий тип аргументів
- Вони можуть використовуватися тільки разом
class MyClass:
class_var = 0
def __init__(self):
MyClass.class_var += 1
self.instance_var = MyClass.class_var
a = MyClass()
b = MyClass()
print(a.instance_var, b.instance_var)
print(MyClass.class_var)-
1 2і2 -
0 1і2 -
1 1і1 -
2 2і2
-
__plus__() -
__add__() -
__sum__() -
__combine__()
from collections import namedtuple
Person = namedtuple('Person', ['name', 'age', 'city'])
p = Person('Alice', 30, 'New York')
print(p.name)
print(p[1])
print(p._fields)-
Alice,30,('name', 'age', 'city') -
Alice,Alice,['name', 'age', 'city'] -
Person,30,('name', 'age', 'city') -
AttributeError
- Lambda функції можуть містити кілька інструкцій
- Lambda функції можуть містити тільки один вираз
- Lambda функції не можуть приймати аргументи
- Lambda функції швидші звичайних функцій