Skip to content
This repository was archived by the owner on Apr 18, 2019. It is now read-only.

Commit 505484d

Browse files
Merge pull request #3 from dmitryrubtsov/lesson-03
It has checked lesson 03.
2 parents 9273b8d + 4190f9c commit 505484d

File tree

10 files changed

+213
-7
lines changed

10 files changed

+213
-7
lines changed

README.md

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22
Education
33
Алгоритмы и структуры данных на Python. Базовый курс. Учебные задания на портале GeekBrains.
44

5-
**Lesson 1**
5+
## **Lesson 1**
66

7-
1. Найти сумму и произведение цифр трехзначного числа, которое вводит пользователь.
7+
1. Найти сумму и произведение цифр трёхзначного числа, которое вводит пользователь.
88
2. Выполнить логические побитовые операции «И», «ИЛИ» и др. над числами 5 и 6. Выполнить над числом 5 побитовый сдвиг вправо и влево на два знака. Объяснить полученный результат.
9-
3. По введенным пользователем координатам двух точек вывести уравнение прямой вида y=kx+b, проходящей через эти точки.
9+
3. По введённым пользователем координатам двух точек вывести уравнение прямой вида y=kx+b, проходящей через эти точки.
1010
4. Написать программу, которая генерирует в указанных пользователем границах:
1111
случайное целое число;
1212
случайное вещественное число;
1313
случайный символ.
14-
Для каждого из трех случаев пользователь задает свои границы диапазона. Например, если надо получить случайный символ от 'a' до 'f', то вводятся эти символы. Программа должна вывести на экран любой символ алфавита от 'a' до 'f' включительно.
14+
Для каждого из трёх случаев пользователь задаёт свои границы диапазона. Например, если надо получить случайный символ от 'a' до 'f', то вводятся эти символы. Программа должна вывести на экран любой символ алфавита от 'a' до 'f' включительно.
1515
5. Пользователь вводит две буквы. Определить, на каких местах алфавита они стоят и сколько между ними находится букв.
1616
6. Пользователь вводит номер буквы в алфавите. Определить, какая это буква.
17-
7. По длинам трех отрезков, введенных пользователем, определить возможность существования треугольника, составленного из этих отрезков. Если такой треугольник существует, то определить, является ли он разносторонним, равнобедренным или равносторонним.
18-
8. Определить, является ли год, который ввел пользователем, високосным или невисокосным.
17+
7. По длинам трёх отрезков, введённых пользователем, определить возможность существования треугольника, составленного из этих отрезков. Если такой треугольник существует, то определить, является ли он разносторонним, равнобедренным или равносторонним.
18+
8. Определить, является ли год, который ввёл пользователем, високосным или невисокосным.
1919
9. Вводятся три разных числа. Найти, какое из них является средним (больше одного, но меньше другого).
2020

21-
**Lesson 2**
21+
## **Lesson 2**
2222

2323
1. Написать программу, которая будет складывать, вычитать, умножать или делить два числа. Числа и знак операции вводятся пользователем. После выполнения вычисления программа не должна завершаться, а должна запрашивать новые данные для вычислений. Завершение программы должно выполняться при вводе символа '0' в качестве знака операции. Если пользователь вводит неверный знак (не '0', '+', '-', '*', '/'), то программа должна сообщать ему об ошибке и снова запрашивать знак операции. Также сообщать пользователю о невозможности деления на ноль, если он ввел 0 в качестве делителя.
2424
2. Посчитать четные и нечетные цифры введенного натурального числа. Например, если введено число 34560, то у него 3 четные цифры (4, 6 и 0) и 2 нечетные (3 и 5).
@@ -29,3 +29,15 @@ Education
2929
7. Напишите программу, доказывающую или проверяющую, что для множества натуральных чисел выполняется равенство: 1+2+...+n = n(n+1)/2, где n - любое натуральное число.
3030
8. Посчитать, сколько раз встречается определенная цифра в введенной последовательности чисел. Количество вводимых чисел и цифра, которую необходимо посчитать, задаются вводом с клавиатуры.
3131
9. Среди натуральных чисел, которые были введены, найти наибольшее по сумме цифр. Вывести на экран это число и сумму его цифр.
32+
33+
## **Lesson 3**
34+
35+
1. В диапазоне натуральных чисел от 2 до 99 определить, сколько из них кратны каждому из чисел в диапазоне от 2 до 9.
36+
2. Во втором массиве сохранить индексы четных элементов первого массива. Например, если дан массив со значениями 8, 3, 15, 6, 4, 2, то во второй массив надо заполнить значениями 1, 4, 5, 6 (или 0, 3, 4, 5 - если индексация начинается с нуля), т.к. именно в этих позициях первого массива стоят четные числа.
37+
3. В массиве случайных целых чисел поменять местами минимальный и максимальный элементы.
38+
4. Определить, какое число в массиве встречается чаще всего.
39+
5. В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве.
40+
6. В одномерном массиве найти сумму элементов, находящихся между минимальным и максимальным элементами. Сами минимальный и максимальный элементы в сумму не включать.
41+
7. В одномерном массиве целых чисел определить два наименьших элемента. Они могут быть как равны между собой (оба являться минимальными), так и различаться.
42+
8. Матрица 5x4 заполняется вводом с клавиатуры кроме последних элементов строк. Программа должна вычислять сумму введенных элементов каждой строки и записывать в последнюю ячейку строки. В конце следует вывести полученную матрицу.
43+
9. Найти максимальный элемент среди минимальных элементов столбцов матрицы.

lesson-03/lesson-03_1.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'''1. В диапазоне натуральных чисел от 2 до 99 определить, сколько из них
2+
кратны каждому из чисел в диапазоне от 2 до 9.'''
3+
4+
result = {}
5+
for n in range(2, 10):
6+
result[n] = []
7+
for f in range(2, 100):
8+
if f % n == 0:
9+
result[n].append(f)
10+
print(
11+
f'Для числа {n} кратны - {len(result[n])}. Кратные числа: {result[n]}.'
12+
)

lesson-03/lesson-03_2.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'''2. Во втором массиве сохранить индексы чётных элементов первого
2+
массива. Например, если дан массив со значениями 8, 3, 15, 6, 4, 2, то
3+
во второй массив надо заполнить значениями 1, 4, 5, 6 (или 0, 3, 4, 5 -
4+
если индексация начинается с нуля), т.к. именно в этих позициях первого
5+
массива стоят чётные числа.'''
6+
7+
import random
8+
9+
r = [random.randint(0, 99) for _ in range(10)]
10+
print(f'Первый массив {r}')
11+
index_even = []
12+
13+
for n in r:
14+
if n % 2 == 0:
15+
index_even.append(r.index(n))
16+
17+
print(f'Индексы чётных элементов первого массива: {index_even}')

lesson-03/lesson-03_3.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'''3. В массиве случайных целых чисел поменять местами минимальный и
2+
максимальный элементы.'''
3+
4+
import random
5+
6+
r = [random.randint(0, 99) for _ in range(10)]
7+
print(f'Массив до изменения: {r}')
8+
9+
max = r[0]
10+
min = r[0]
11+
12+
for i in r:
13+
if i > max:
14+
max = i
15+
elif i < min:
16+
min = i
17+
min_index = r.index(min)
18+
max_index = r.index(max)
19+
r[min_index], r[max_index] = r[max_index], r[min_index]
20+
print(f'Массив осле изменения элементов {min_index} и {max_index}: {r}')

lesson-03/lesson-03_4.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
'''4. Определить, какое число в массиве встречается чаще всего.'''
2+
3+
import random
4+
5+
r = [random.randint(0, 99) for _ in range(100)]
6+
print(f'Массив: {r}')
7+
8+
max_index = 0
9+
for i in r:
10+
if r.count(max_index) < r.count(i):
11+
max_index = r.index(i)
12+
13+
print(f'Число {r[max_index]}, встречается {r.count(max_index)} раза')

lesson-03/lesson-03_5.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'''5. В массиве найти максимальный отрицательный элемент. Вывести на
2+
экран его значение и позицию в массиве.'''
3+
4+
import random
5+
6+
r = [random.randint(-99, 99) for _ in range(100)]
7+
print(f'Массив: {r}')
8+
9+
min_index = 0
10+
11+
for i in r:
12+
if r[min_index] > i:
13+
min_index = r.index(i)
14+
15+
if r[min_index] >= 0:
16+
print(f'В массиве нет отрицательных элементов')
17+
else:
18+
print(f'В массиве минимальный отрицательный элемент: {r[min_index]}.',
19+
f'Находится в массиве на позиции {min_index}')

lesson-03/lesson-03_6.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
'''6. В одномерном массиве найти сумму элементов, находящихся между
2+
минимальным и максимальным элементами. Сами минимальный и максимальный
3+
элементы в сумму не включать.'''
4+
5+
import random
6+
7+
r = [random.randint(0, 99) for _ in range(10)]
8+
print(f'Массив: {r}')
9+
10+
min_index = 0
11+
max_index = 0
12+
step = 1
13+
sum = 0
14+
15+
for i in r:
16+
if r[min_index] > i:
17+
min_index = r.index(i)
18+
elif r[max_index] < i:
19+
max_index = r.index(i)
20+
21+
if max_index - min_index < 0:
22+
step = -1
23+
24+
for i in r[min_index + step:max_index:step]:
25+
sum += i
26+
# print(f'DEBUG i={i}')
27+
28+
print(
29+
f'Сумма элементов между минимальным ({r[min_index]})',
30+
f' и максимальным ({r[max_index]}) элементами: {sum}'
31+
)

lesson-03/lesson-03_7.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
'''7. В одномерном массиве целых чисел определить два наименьших
2+
элемента. Они могут быть как равны между собой (оба являться
3+
минимальными), так и различаться.'''
4+
5+
import random
6+
7+
r = [random.randint(0, 99) for _ in range(100)]
8+
print(f'Массив: {r}')
9+
10+
min_index_1 = 0
11+
min_index_2 = 1
12+
13+
for i in r:
14+
if r[min_index_1] > i:
15+
min_index_2 = min_index_1
16+
min_index_1 = r.index(i)
17+
elif r[min_index_2] > i:
18+
min_index_2 = r.index(i)
19+
20+
print(f'Два наименьших элемента: {r[min_index_1]} и {r[min_index_2]}')
21+
22+
'''Второй способ через сортировку списка'''
23+
24+
sort_list = []
25+
sort_list.extend(r)
26+
sort_list.sort()
27+
28+
print(
29+
f'Два наименьших элемента (второй способ): {sort_list[0]} и {sort_list[1]}'
30+
)

lesson-03/lesson-03_8.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'''8. Матрица 5x4 заполняется вводом с клавиатуры кроме последних
2+
элементов строк. Программа должна вычислять сумму введенных элементов
3+
каждой строки и записывать в последнюю ячейку строки. В конце следует
4+
вывести полученную матрицу.'''
5+
6+
matrix = []
7+
8+
for i in range(4):
9+
matrix.append([])
10+
sum = 0
11+
for n in range(4):
12+
user_number = int(input(f'Введите элемент {i+1} и {n+1} столбца: '))
13+
sum += user_number
14+
matrix[i].append(user_number)
15+
16+
matrix[i].append(sum)
17+
18+
for a in matrix:
19+
print(('{:>4d}' * 5).format(*a))

lesson-03/lesson-03_9.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
'''9. Найти максимальный элемент среди минимальных элементов столбцов
2+
матрицы.'''
3+
4+
import random
5+
6+
matrix = []
7+
8+
for i in range(15):
9+
matrix.append([])
10+
matrix[i].extend([random.randint(0, 99) for _ in range(15)])
11+
12+
min_list = []
13+
min_list.extend(matrix[0])
14+
15+
for string in matrix:
16+
print()
17+
print(('{:4d} ' * len(string)).format(*string))
18+
i = 0
19+
for j in string:
20+
if j < min_list[i]:
21+
min_list[i] = j
22+
i += 1
23+
24+
print()
25+
print('min_list')
26+
print(('{:4d} ' * len(min_list)).format(*min_list))
27+
print()
28+
29+
min_list.sort(reverse=True)
30+
print(
31+
'Максимальный элемент среди минимальных элементов столбцов матрицы: ',
32+
min_list[0]
33+
)

0 commit comments

Comments
 (0)