diff --git a/Module16/01_videocards/main.py b/Module16/01_videocards/main.py index da21048..8e6fc6a 100644 --- a/Module16/01_videocards/main.py +++ b/Module16/01_videocards/main.py @@ -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) diff --git a/Module16/02_movie/main.py b/Module16/02_movie/main.py index f859913..a676478 100644 --- a/Module16/02_movie/main.py +++ b/Module16/02_movie/main.py @@ -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]) \ No newline at end of file diff --git a/Module16/03_running_nums/main.py b/Module16/03_running_nums/main.py index 9b7f69c..da5e83e 100644 --- a/Module16/03_running_nums/main.py +++ b/Module16/03_running_nums/main.py @@ -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') \ No newline at end of file diff --git a/Module16/04_word_analysis_2/main.py b/Module16/04_word_analysis_2/main.py index 9b7f69c..ed1423c 100644 --- a/Module16/04_word_analysis_2/main.py +++ b/Module16/04_word_analysis_2/main.py @@ -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()), то это в два раза ускоряет выполнение нашей программы? + + diff --git a/Module16/05_sort/main.py b/Module16/05_sort/main.py index 9b7f69c..4e858b3 100644 --- a/Module16/05_sort/main.py +++ b/Module16/05_sort/main.py @@ -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) \ No newline at end of file diff --git a/Module16/06_unique_combination/main.py b/Module16/06_unique_combination/main.py index 374a42e..b809168 100644 --- a/Module16/06_unique_combination/main.py +++ b/Module16/06_unique_combination/main.py @@ -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] diff --git a/Module16/07_details/main.py b/Module16/07_details/main.py index 3cad702..a619410 100644 --- a/Module16/07_details/main.py +++ b/Module16/07_details/main.py @@ -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) \ No newline at end of file diff --git a/Module16/08_songs/main.py b/Module16/08_songs/main.py index 0d14d68..c218c13 100644 --- a/Module16/08_songs/main.py +++ b/Module16/08_songs/main.py @@ -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)} минуты') \ No newline at end of file diff --git a/Module16/09_roller_skates/main.py b/Module16/09_roller_skates/main.py index 9b7f69c..484d1ed 100644 --- a/Module16/09_roller_skates/main.py +++ b/Module16/09_roller_skates/main.py @@ -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) + + diff --git a/Module16/10_rhyme_cnt/main.py b/Module16/10_rhyme_cnt/main.py index 9b7f69c..7e7adac 100644 --- a/Module16/10_rhyme_cnt/main.py +++ b/Module16/10_rhyme_cnt/main.py @@ -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]) \ No newline at end of file diff --git a/Module16/11_simmetrical_seq/main.py b/Module16/11_simmetrical_seq/main.py index 9b7f69c..2548175 100644 --- a/Module16/11_simmetrical_seq/main.py +++ b/Module16/11_simmetrical_seq/main.py @@ -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]}]') diff --git a/main.py b/main.py deleted file mode 100644 index adb3730..0000000 --- a/main.py +++ /dev/null @@ -1 +0,0 @@ -print("My name is Alisher") \ No newline at end of file