-
Notifications
You must be signed in to change notification settings - Fork 0
Lesson03 #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Lesson03 #3
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # Задание №1 | ||
| # В диапазоне натуральных чисел от 2 до 99 определить, сколько из них кратны | ||
| # каждому из чисел в диапазоне от 2 до 9. | ||
|
|
||
| sum_ = 0 | ||
| for i in range(2, 99+1): | ||
| for j in range(2, 9+1): | ||
| if (i % j) == 0: | ||
| sum_ += 1 | ||
| break | ||
|
|
||
| print("Количество кратных чисел:", sum_) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| # Задание №2 | ||
| # Во втором массиве сохранить индексы четных элементов первого массива. | ||
| # Например, если дан массив со значениями 8, 3, 15, 6, 4, 2, второй массив | ||
| # надо заполнить значениями 0, 3, 4, 5, (индексация начинается с нуля), | ||
| # т.к. именно в этих позициях первого массива стоят четные числа. | ||
|
|
||
| array1 = [4,6,3,6,8,5,9,34,57,78,44,23,55,62] | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. А как же генерация массива, которую использовали на уроке и договорились использовать в рамках практической работы? |
||
| array2 = [] | ||
| for inx, val in enumerate(array1): | ||
| if val % 2 == 0: | ||
| array2.append(inx) | ||
|
|
||
| print("Искомый массив: ", array2) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| # Задание №3 | ||
| # В массиве случайных целых чисел поменять местами минимальный и максимальный | ||
| # элементы. | ||
|
|
||
| import random | ||
|
|
||
|
|
||
| def get_MaxMin_Inx(source_array): | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Что за смесь camelCase и snake_case :-))) |
||
| max_inx = min_inx = 0 | ||
| for inx, val in enumerate(source_array[1:], 1): | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Срезы. Экономим на 1-й итерации цикла и тратим память на почти полную копию массива :-( |
||
| if val > source_array[max_inx]: | ||
| max_inx = inx | ||
| if val < source_array[min_inx]: | ||
| min_inx = inx | ||
| return {'max_inx': max_inx, 'min_inx': min_inx} | ||
|
|
||
|
|
||
| size_array = 10 | ||
| source_array = [random.randint(1,50) for _ in range(size_array)] | ||
|
|
||
| res = get_MaxMin_Inx(source_array) | ||
| result_array = source_array.copy() | ||
| result_array[res["min_inx"]] = source_array[res["max_inx"]] | ||
| result_array[res["max_inx"]] = source_array[res["min_inx"]] | ||
|
|
||
| print("Минимальное:", source_array[res["min_inx"]], "\nМаксимальное:", source_array[res["max_inx"]]) | ||
| print(source_array) | ||
| print(result_array) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # Задание №4 | ||
| # Определить, какое число в массиве встречается чаще всего. | ||
|
|
||
| number = { | ||
| "num" : 0, | ||
| "count" : 0 | ||
| } | ||
| array = [45, 44, 47, 9, 47, 9, 44, 28, 41, 9] | ||
| for inx, val in enumerate(array[:-1]): | ||
| cur_count = 1 | ||
| for inx_, val_ in enumerate(array[inx+1:],inx+1): | ||
| if val == val_: | ||
| cur_count += 1; | ||
| if cur_count > number["count"]: | ||
| number["num"] = val | ||
| number["count"] = cur_count | ||
| print("Максимальное число:", number["num"],"\nВстречается:",number["count"]) | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # Задание №5 | ||
| # В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве. | ||
| # Примечание к задаче: пожалуйста не путайте «минимальный» и «максимальный отрицательный». Это два | ||
| # абсолютно разных значения. | ||
|
|
||
| max_ = None | ||
| array = [45, 44, -47, 9, 47, -9, 44, -2, 41, 9] | ||
| for inx, val in enumerate(array[:-1]): | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Принимается |
||
| if val < 0: | ||
| if max_ is None or val > max_: | ||
| max_ = val | ||
| print(max_) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # Задание №6 | ||
| # В одномерном массиве найти сумму элементов, находящихся между минимальным и максимальным элементами. | ||
| # Сами минимальный и максимальный элементы в сумму не включать. | ||
|
|
||
| import random | ||
|
|
||
| def get_MaxMin_Inx(source_array): | ||
| max_inx = min_inx = 0 | ||
| for inx, val in enumerate(source_array[1:], 1): | ||
| if val > source_array[max_inx]: | ||
| max_inx = inx | ||
| if val < source_array[min_inx]: | ||
| min_inx = inx | ||
| return {'max_inx': max_inx, 'min_inx': min_inx} | ||
|
|
||
|
|
||
| size_array = 10 | ||
| array = [random.randint(1,50) for _ in range(size_array)] | ||
| print(array) | ||
| res = get_MaxMin_Inx(array) | ||
| print(res) | ||
| sum_ = 0 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Отличная доработка |
||
| if res["max_inx"] > res["min_inx"]: | ||
| range_start = res["min_inx"] + 1 | ||
| range_end = res["max_inx"] | ||
| else: | ||
| range_start = res["max_inx"] + 1 | ||
| range_end = res["min_inx"] | ||
| for i in array[range_start:range_end]: | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Кстати, если размер массива 1 Гб, а искомые элементы окажутся в начале и конце, получим копию в 1Гб для этого цикла. Впрочем, не стоит переживать. Копию чаще всего будет 333-500 Мб ;-) |
||
| sum_ += i | ||
| print("Требуемая сумма:", sum_) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # Задание №7 | ||
| # В одномерном массиве целых чисел определить два наименьших элемента. Они могут быть как равны | ||
| # между собой (оба являться минимальными), так и различаться. | ||
|
|
||
| source_array = [4,6,3,6,8,5,9,34,57,78,1,23,8,62] | ||
| print(source_array) | ||
| array = source_array.copy() | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Бедная память. |
||
| min_ = [] | ||
| for i in range(0, 2): | ||
| min_.append(array[0]) | ||
| min_inx = 0 | ||
| for inx,val in enumerate(array[1:],1): | ||
| if val < min_[-1]: | ||
| min_[-1] = val | ||
| min_inx = inx | ||
| del array[min_inx] | ||
| print(min_) | ||
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Похоже вы ушли с урока 2 пораньше, не услышали описание алгоритма и решили не ту задачу.