Merge branch 'homework-3.6' into 'master'

The homework is done

See merge request alisher_boltaev/Python_Basic!2
This commit is contained in:
Тимур Исламгулов
2025-09-19 11:03:32 +03:00
12 changed files with 246 additions and 2 deletions

View File

@@ -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)

View File

@@ -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])

View File

@@ -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')

View File

@@ -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()), то это в два раза ускоряет выполнение нашей программы?

View File

@@ -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)

View File

@@ -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]

View File

@@ -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)

View File

@@ -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)} минуты')

View File

@@ -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)

View File

@@ -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])

View File

@@ -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]}]')

View File

@@ -1 +0,0 @@
print("My name is Alisher")