Циклы
Циклы - это способ сделать что-то несколько раз. Например, мы можем 3 раза напечатать мяу, не используя цикл:
print("мяу")
print("мяу")
print("мяу")
Код с использованием цикла будет удобнее писать, читать, изменять.
while цикл
i = 3
while i != 0:
print("мяу")
i = i - 1
+=, -= - операторы удобны для изменения переменных,
так i = i - 1 можно записать i -= 1
i = 0
while i < 3:
print("мяу")
i += 1
for цикл
for i in [0, 1, 2]:
print(i, "мяу")
i последовательно принимает значения из списка [0, 1, 2].
Тип данных list (список).
В цикле for удобно использовать неизменяемый тип
range (диапазон).
class range(stop)
class range(start, stop[,step])
С использованием range получим:
for i in range(3):
print(i, "мяу")
Тест ввода пользователя
Допустим, программа ждёт от пользователя положительное целое число. Можно использовать цикл для организации проверки правильности ввода
while True:
n = int(input("Введите n: "))
if n > 0:
break
else:
continue
for i in range(n):
print("мяу")
continue - начать следующую итерацию цикла.
break - выйти из цикла.
def main():
number = get_number()
meow(number)
def get_number():
while True:
n = int(input("Введите n: "))
if n > 0:
break
return n
def meow(n):
for i in range(n):
print("мяу")
main()
Тип данных list (список)
students = ["Гермиона", "Гарри", "Рон"]
print(students[0])
print(students[1])
print(students[2])
Список удобно обрабатывать в цикле.
students = ["Гермиона", "Гарри", "Рон"]
for student in students:
print(student)
len
len - функция возвращает числу элементов.
Следующий код печатает имя студента и его положение в списке.
students = ["Гермиона", "Гарри", "Рон"]
n = len(students)
for i in range(n):
print(i, students[i])
dict тип данных (словарь)
dict - структура данных для связывания ключей с значениями.| Гермиона | Гарри | Рон | Драко |
|---|---|---|---|
| Гриффиндор | Гриффиндор | Гриффиндор | Слизерин |
students={
"Гермиона": "Гриффиндор",
"Гарри": "Гриффиндор",
"Рон": "Гриффиндор",
"Драко": "Слизерин"
}
print(students["Гермиона"])
print(students["Гарри"])
print(students["Рон"])
print(students["Драко"])
Для итерации по списку мы можем использовать цикл.
students={
"Гермиона": "Гриффиндор",
"Гарри": "Гриффиндор",
"Рон": "Гриффиндор",
"Драко": "Слизерин"
}
for student in students:
print(student, students[student], sep=", ")
Переменная student пробегает множество ключей из словаря.
Запись students["Ron"] по ключу возвращает значение.
Что если мы хотим иметь больше информации о студентах.
| имя | факультет | патронус | |
|---|---|---|---|
| 0 | Гермиона | Гриффиндор | Выдра |
| 1 | Гарри | Гриффиндор | Олень |
| 2 | Рон | Гриффиндор | Джек Рассел терьер |
| 3 | Драко | Слизерин |
students = [
{"имя": "Гермиона", "факультет": "Гриффиндор", "патронус":"выдра"},
{"имя": "Гарри", "факультет": "Гриффиндор", "патронус": "Олень"},
{"имя": "Драко", "факультет": "Слизерин", "патронус": None}
]
for student in students:
print(student["имя"], student["факультет"], student["патронус"], sep=", ")
Марио
В игре Марио прыгает через препятствия. Давайте создадим текстовый представление игры.
Закодируем такой столбец:
def main():
print_column(3)
def print_column(height):
for i in range(height):
print("#")
main()
Давайте теперь создадим горизонтальный ряд.
def main():
print_row(4)
def print_row(width):
print("?" * width)
main()
Далее реализуем построение из строк и столбцов
def main():
print_square(3)
def print_square(size):
#Для каждой строки в квадрате
for i in range(size):
# Для каждого кирпича в строке
for j in range(size):
print("#", end="")
#Печатаем пустую строку
print()
main()
Можно так реализовать код:
def main():
print_square(3)
def print_square(n):
for i in range(3):
print_row(3)
def print_row(n):
print("#"*n)
main()