Merge branch 'homework-3.6' into 'master'
The homework is done See merge request alisher_boltaev/Python_Basic!2
This commit is contained in:
@@ -1,3 +1,20 @@
|
||||
# TODO здесь писать код
|
||||
# GPU_list = [3070, 2060, 3090, 3070, 3090]
|
||||
def input_cards():
|
||||
gpu_list = []
|
||||
count_gpu = int(input('Кол-во видеокарт: '))
|
||||
for i in range(1, count_gpu + 1):
|
||||
gpu_list.append(int(input(f'{i}-Видеокарта: ')))
|
||||
|
||||
def by_cards():
|
||||
new_gpu_list = []
|
||||
max_model = max(gpu_list)
|
||||
for value in gpu_list:
|
||||
if value != max_model:
|
||||
new_gpu_list.append(value)
|
||||
|
||||
input_cards()
|
||||
by_cards()
|
||||
|
||||
print('\nСтарый список видеокарт:', GPU_list)
|
||||
print('Новый список видеокарт:', new_GPU_list)
|
||||
|
||||
@@ -3,3 +3,23 @@ films = ['Крепкий орешек', 'Назад в будущее', 'Так
|
||||
'Мементо', 'Отступники', 'Деревня']
|
||||
|
||||
# TODO здесь писать код
|
||||
def add_films_to_list():
|
||||
added_films = []
|
||||
|
||||
add_films = int(input('Сколько фильмов хотите добавить? '))
|
||||
|
||||
for _ in range(add_films):
|
||||
film_name = input('Введите название фильма: ')
|
||||
if film_name in films:
|
||||
added_films.append(film_name)
|
||||
else:
|
||||
print(f'Ошибка: фильма {film_name} у нас нет :(')
|
||||
return added_films
|
||||
|
||||
favorite_films = add_films_to_list()
|
||||
|
||||
print('Ваш список любимых фильмов:', end=' ')
|
||||
for i_film in range(len(favorite_films)-1):
|
||||
print(favorite_films[i_film], end=', ')
|
||||
else:
|
||||
print(favorite_films[len(favorite_films)-1])
|
||||
@@ -1 +1,32 @@
|
||||
# TODO здесь писать код
|
||||
def show_list(collection, secret):
|
||||
if secret == 'first':
|
||||
print('Изначальный список:', end=' ')
|
||||
elif secret == 'after':
|
||||
print('Сдвинутый список:', end=' ')
|
||||
print('[', end='')
|
||||
for i_collection in range(len(collection) - 1):
|
||||
print(collection[i_collection], end=', ')
|
||||
print(collection[len(collection) - 1], end=']')
|
||||
print()
|
||||
|
||||
def rebuild_list(collection, index):
|
||||
new_collection = []
|
||||
step = len(collection)
|
||||
while step > 0:
|
||||
if len(collection) <= index or index < 0:
|
||||
index %= len(collection)
|
||||
# elif abs(step + index) == 0:
|
||||
# index = 0
|
||||
# elif index < 0:
|
||||
# index = abs(len(collection)- 1 - index) % len(collection)
|
||||
new_collection.append(collection[index])
|
||||
index += 1
|
||||
step -= 1
|
||||
return new_collection
|
||||
|
||||
list_for_view = [1, 2, 3, 4, 5]
|
||||
|
||||
shift = int(input('Сдвиг: '))
|
||||
show_list(list_for_view, 'first')
|
||||
show_list(rebuild_list(list_for_view, shift), 'after')
|
||||
@@ -1 +1,23 @@
|
||||
# TODO здесь писать код
|
||||
def check_word(word):
|
||||
length = len(word)
|
||||
diff = length // 2
|
||||
for i in range(diff):
|
||||
if word[i] != word[length - i - 1]:
|
||||
return False # Плюс к тому же, как только есть несоответствие - прерываем цикл
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
|
||||
text = input('Введите слово: ')
|
||||
|
||||
if text == text[::-1] and check_word(text):
|
||||
print('Слово является палиндромом')
|
||||
else:
|
||||
print('Слово не является палиндромом')
|
||||
|
||||
# Но по данному методу ([::-1]), мы запускаем цикл, который работает len(text) раз
|
||||
# А если проверять сразу по два символа (check_word()), то это в два раза ускоряет выполнение нашей программы?
|
||||
|
||||
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
# TODO здесь писать код
|
||||
def sort_number():
|
||||
for i_number in range(len(sort_this_number) - 1):
|
||||
for i_next_number in range(i_number + 1, len(sort_this_number)):
|
||||
_min = sort_this_number[i_number] # можно обойтись без этих переменных, но код станет не очень читаемым...
|
||||
_max = sort_this_number[i_next_number]
|
||||
if _min > _max:
|
||||
sort_this_number[i_number] = _max
|
||||
sort_this_number[i_next_number] = _min
|
||||
|
||||
|
||||
sort_this_number = [-67, 4, -3, 0, -5]
|
||||
|
||||
print('Изначальный список:', sort_this_number)
|
||||
sort_number()
|
||||
print('Отсортированный список:',sort_this_number)
|
||||
@@ -1,5 +1,15 @@
|
||||
# TODO здесь писать код
|
||||
|
||||
def merge_sorted_lists(collection1, collection2):
|
||||
result_collection = []
|
||||
for value2 in collection2:
|
||||
for value1 in collection1:
|
||||
if value2 == value1:
|
||||
break
|
||||
else:
|
||||
result_collection.append(value2)
|
||||
result_collection.extend(collection1)
|
||||
result_collection.sort()
|
||||
return result_collection
|
||||
|
||||
# Пример использования:
|
||||
list1 = [1, 3, 5, 7, 9]
|
||||
|
||||
@@ -11,3 +11,15 @@ shop = [
|
||||
]
|
||||
|
||||
# TODO здесь писать код
|
||||
def search(detail_name):
|
||||
amount = 0
|
||||
summ = 0
|
||||
for item in shop:
|
||||
if item[0] == detail_name:
|
||||
summ += item[1]
|
||||
amount += 1
|
||||
print('Кол-во деталей —', amount)
|
||||
print('Общая стоимость —', summ)
|
||||
|
||||
search_item = input('Название детали: ')
|
||||
search(search_item)
|
||||
@@ -11,3 +11,15 @@ violator_songs = [
|
||||
]
|
||||
|
||||
# TODO здесь писать код
|
||||
summ_time = 0.00
|
||||
|
||||
amount = int(input('Сколько песен выбрать? '))
|
||||
|
||||
for i in range(1, amount + 1):
|
||||
song = input(f'Название {i}-й песни: ')
|
||||
for song_option in violator_songs:
|
||||
if song_option[0] == song:
|
||||
summ_time += song_option[1]
|
||||
break
|
||||
|
||||
print(f'Общее время звучания песен: {round(summ_time, 2)} минуты')
|
||||
@@ -1 +1,35 @@
|
||||
# TODO здесь писать код
|
||||
def fill_size_list(number, whose: str):
|
||||
collection = []
|
||||
if whose == 'skates':
|
||||
text_first = 'Размер '
|
||||
text_last = '-й пары: '
|
||||
else:
|
||||
text_first = 'Размер ноги '
|
||||
text_last = '-го человека: '
|
||||
for i in range(1, number + 1):
|
||||
collection.append(int(input(f'{text_first}{i}{text_last}')))
|
||||
return collection
|
||||
|
||||
number_sizes_skates = int(input("Кол-во коньков: "))
|
||||
skates_size_list = fill_size_list(number_sizes_skates, 'skates')
|
||||
print()
|
||||
number_sizes_legs = int(input('Кол-во людей: '))
|
||||
legs_size_list = fill_size_list(number_sizes_legs, 'legs')
|
||||
print()
|
||||
|
||||
# Я так и не понял, для чего искать наименьший подходящий размер... :(
|
||||
# skates_size_list.sort()
|
||||
# legs_size_list.sort()
|
||||
|
||||
count_busy = 0
|
||||
for leg in legs_size_list:
|
||||
for i_skate, skate in enumerate(skates_size_list):
|
||||
if leg == skate:
|
||||
skates_size_list[i_skate] = 0
|
||||
count_busy += 1
|
||||
break
|
||||
|
||||
print('Наибольшее кол-во людей, которые могут взять ролики:', count_busy)
|
||||
|
||||
|
||||
|
||||
@@ -1 +1,25 @@
|
||||
# TODO здесь писать код
|
||||
count_people = int(input('Кол-во человек: '))
|
||||
peoples = list(range(1, count_people + 1))
|
||||
|
||||
count_number = int(input('Какое число в считалке? '))
|
||||
print(f'Значит, выбывает каждый {count_number}-й человек\n')
|
||||
|
||||
# Скорее всего не оптимальное решение.
|
||||
# Решал чисто "интуитивно", с помощью дебага и "экспериментов" с вычислениями
|
||||
leave = 0
|
||||
while len(peoples) > 1:
|
||||
print('Текущий круг людей:', peoples)
|
||||
print('Начало счёта с номера', peoples[leave])
|
||||
leave = (leave + count_number) % len(peoples)
|
||||
if leave == 0:
|
||||
leave = len(peoples) - 1
|
||||
else:
|
||||
leave -= 1
|
||||
print('Выбывает человек под номером', peoples[leave])
|
||||
print()
|
||||
peoples.remove(peoples[leave])
|
||||
if leave >= len(peoples):
|
||||
leave %= len(peoples)
|
||||
|
||||
print('Остался человек под номером', peoples[0])
|
||||
@@ -1 +1,49 @@
|
||||
# TODO здесь писать код
|
||||
# По примерам, я так понял, что, пользователь не вводит цифру 0
|
||||
# Решил немного смухлевать
|
||||
def check_numbers(collection):
|
||||
temp = [] # Из-за того что родительский список тоже менялся,
|
||||
temp.extend(collection) # пришлось городить такой способ
|
||||
length = len(temp)
|
||||
diff = length // 2
|
||||
remain = length % 2
|
||||
for i in range(diff):
|
||||
index_left = (diff - i) - 1
|
||||
index_right = (diff + i) + remain
|
||||
if temp[index_right] == 0:
|
||||
continue
|
||||
if temp[index_left] != temp[index_right]:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def rebuild(collection, number):
|
||||
for i_number in range(number, 0, -1):
|
||||
collection.append(collection[i_number-1])
|
||||
|
||||
def count_changes(collection):
|
||||
number = 0
|
||||
temp_collection = [] # Из-за того что родительский список тоже менялся,
|
||||
temp_collection.extend(collection) # пришлось городить такой способ
|
||||
while not check_numbers(temp_collection):
|
||||
temp_collection.append(0)
|
||||
number += 1
|
||||
return number
|
||||
|
||||
numbers_list = []
|
||||
numbers = int(input('Кол-во чисел: '))
|
||||
for i in range(numbers):
|
||||
numbers_list.append(int(input('Число: ')))
|
||||
print()
|
||||
print('Последовательность:',numbers_list)
|
||||
|
||||
step_count = count_changes(numbers_list)
|
||||
rebuild(numbers_list, step_count) # Даже без return родительский список все равно меняется :-\
|
||||
# print(numbers)
|
||||
if step_count != 0:
|
||||
print('Нужно приписать чисел:', step_count)
|
||||
print('Сами числа: [', end='')
|
||||
for i_num in range(len(numbers_list) - step_count, len(numbers_list) -1):
|
||||
print(numbers_list[i_num],end=', ')
|
||||
else:
|
||||
print(f'{numbers_list[len(numbers_list) -1]}]')
|
||||
|
||||
Reference in New Issue
Block a user