10 класс Информатика ГДЗ учебник Поляков 2 часть Параграф 62 Массивы
Стр.210.
1. В Python массивы заменены списками, потому что списки являются более гибкими и динамическими структурами данных. Они позволяют изменять свой размер, добавлять и удалять элементы, что делает их более удобными для использования в большинстве задач.
2. Списки в Python можно создавать несколькими способами:
- Перечислением элементов через запятую в квадратных скобках:
A = [1, 2, 3]. - Использованием оператора сложения для объединения списков:
A = [1, 2] + [3, 4]. - Использованием оператора умножения для создания списка с повторяющимися элементами:
A = [0] * 10. - С помощью генераторов списков:
A = [i for i in range(10)].
3. Генераторы списков с условием позволяют создавать списки, содержащие только те элементы, которые удовлетворяют определенным условиям. Это упрощает фильтрацию данных и делает код более компактным и читабельным.
4. Массив из 15 единиц можно создать с помощью генератора списка следующим образом: A = [1 for _ in range(15)].
5. К отдельному элементу массива можно обращаться с помощью индекса, заключенного в квадратные скобки. Например, A[0] возвращает первый элемент списка A.
6. Массив можно ввести с клавиатуры, используя цикл и функцию input():
|
1 2 3 4 |
N = int(input("Введите количество элементов: ")) A = [int(input(f"A[{i}] = ")) for i in range(N)] |
7. Вывести массив на экран можно несколькими способами:
- Вывод всего массива как одного объекта:
print(A). - Вывод элементов массива по одному в цикле:
1234for i in range(len(A)):print(A[i], end=" ") - Использование цикла без индексов:
1234for x in A:print(x, end=" ") - Использование оператора
*для вывода всех элементов через пробел:print(*A).
Лично мне больше нравится последний способ, так как он самый короткий и удобный.
8. Массив можно заполнить случайными числами с использованием функции randint из модуля random:
|
1 2 3 4 |
from random import randint A = [randint(100, 200) for _ in range(N)] |
9. Для нахождения суммы элементов массива используется функция sum(), а количество элементов можно узнать с помощью функции len(). Пример:
|
1 2 3 4 |
total_sum = sum(A) count = len(A) |
10. Первый способ: использование цикла для подсчета суммы и количества элементов, удовлетворяющих условию:
|
1 2 3 4 5 6 7 8 9 |
count = 0 total_height = 0 for height in A: if 180 < height < 190: count += 1 total_height += height average_height = total_height / count |
Второй способ: использование генераторов списков:
|
1 2 3 4 |
B = [height for height in A if 180 < height < 190] average_height = sum(B) / len(B) |
Мне больше нравится второй способ, так как он более лаконичен и соответствует стилю Python.
Проекты
а) Игра «Змейка»
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
import turtle import time import random # Настройки окна window = turtle.Screen() window.title("Змейка") window.bgcolor("black") window.setup(width=600, height=600) window.tracer(0) # Голова змеи head = turtle.Turtle() head.speed(0) head.shape("square") head.color("white") head.penup() head.goto(0, 0) head.direction = "stop" # Еда змеи food = turtle.Turtle() food.speed(0) food.shape("circle") food.color("red") food.penup() food.goto(0, 100) segments = [] # Управление змейкой def go_up(): if head.direction != "down": head.direction = "up" def go_down(): if head.direction != "up": head.direction = "down" def go_left(): if head.direction != "right": head.direction = "left" def go_right(): if head.direction != "left": head.direction = "right" def move(): if head.direction == "up": y = head.ycor() head.sety(y + 20) if head.direction == "down": y = head.ycor() head.sety(y - 20) if head.direction == "left": x = head.xcor() head.setx(x - 20) if head.direction == "right": x = head.xcor() head.setx(x + 20) # Клавиатура window.listen() window.onkey(go_up, "w") window.onkey(go_down, "s") window.onkey(go_left, "a") window.onkey(go_right, "d") # Основной цикл игры while True: window.update() # Проверка столкновения с едой if head.distance(food) < 20: x = random.randint(-290, 290) y = random.randint(-290, 290) food.goto(x, y) # Добавление сегмента new_segment = turtle.Turtle() new_segment.speed(0) new_segment.shape("square") new_segment.color("grey") new_segment.penup() segments.append(new_segment) # Перемещение сегментов тела for index in range(len(segments) - 1, 0, -1): x = segments[index - 1].xcor() y = segments[index - 1].ycor() segments[index].goto(x, y) if len(segments) > 0: x = head.xcor() y = head.ycor() segments[0].goto(x, y) move() # Проверка столкновения с границами экрана if head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290: time.sleep(1) head.goto(0, 0) head.direction = "stop" for segment in segments: segment.goto(1000, 1000) segments.clear() # Проверка столкновения с собственным телом for segment in segments: if segment.distance(head) < 20: time.sleep(1) head.goto(0, 0) head.direction = "stop" for segment in segments: segment.goto(1000, 1000) segments.clear() time.sleep(0.1) window.mainloop() |
б) Модель «падающего снега»
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import turtle import random # Настройки окна window = turtle.Screen() window.title("Падающий снег") window.bgcolor("black") window.setup(width=800, height=600) # Снежинки snowflakes = [] for _ in range(100): snowflake = turtle.Turtle() snowflake.speed(0) snowflake.shape("circle") snowflake.color("white") snowflake.penup() snowflake.goto(random.randint(-400, 400), random.randint(100, 400)) snowflakes.append(snowflake) # Основной цикл анимации while True: for snowflake in snowflakes: y = snowflake.ycor() y -= random.randint(1, 3) snowflake.sety(y) # Снежинка достигла нижней границы if y < -300: snowflake.goto(random.randint(-400, 400), random.randint(100, 400)) window.update() |
| 60 | 61 | 62 | 63 | 64 |