Предыдущая тема: while
Управляющие конструкции: for
Определения
Цикл — управляющая конструкция для многократного исполнения набора инструкций.Синтаксис цикла for
в Python:
# Сначала - ключевое слово for # элемент - название переменной, в которую кладется следующая часть из набора .# ключевое слово in # набор - название переменной, которую можно перебрать по частям. ! Разные типы данных перебираются по-разному ! # ... команды - набор команд, которые будет повторяться для каждого элемента из набораfor элемент in набор : ... команды
Сведения
Чтобы перебрать числа в определенном интервале, можно использовать функцию range
: она принимает два параметра - начало интервала и верхнюю границу интервала.
ВНИМАНИЕ! конец интервала в функции range
в интервал не входит!
Например range(0, 10)
позволит перебрать числа от 0 до 9, но не до 10!
for x in range(0, 10):
print(x)
# Вывод программы:
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
Примеры
Примеры использования цикла for:
при переборе текста - берется каждый отдельный его символ
text = 'АБВгдЕЖз'
n_capital_letters = 0
for letter in text:
if letter == letter.upper():
print(letter, '- большая буква')
# Вывод программы:
# А - большая буква
# Б - большая буква
# В - большая буква
# Е - большая буква
# Ж - большая буква
n_capital_letters += 1
print(n_capital_letters)
# Вывод программы:
# 3
# 3
# 3
# Е - большая буква
# 4
# Ж - большая буква
# 5
# 5
print('Число больших букв:', n_capital_letters)
# Вывод программы: Число больших букв: 5
при переборе списка - берется каждый элемент списка (о списках ещё поговорим подробнее):
numbers = [1,2,3,4,5,6,7] # элементы списка - в квадратных скобках
for number in numbers:
print(number)
# Вывод программы:
# 1
# 2
# 3
# 4
# 5
# 6
# 7
if number % 2 == 0:
print("делится на 2")
# Вывод программы:
# 6
# делится на 2
# 7
else:
print("не делится на 2")
# Вывод программы:
# 6
# делится на 2
# 7
# не делится на 2
Элементы списка могут быть и строковыми/текстовыми данными:
names = ["Давид", "Магдалена", "Анастасия", "Агния", "Дарья", "Николай", "Марина"]
for name in names:
print(name)
# Вывод программы:
# Давид
# Магдалена
# Анастасия
# Агния
# Дарья
# Николай
# Марина
if len(name) > 6:
print("длиннее 6 букв")
# Вывод программы:
# Николай
# длиннее 6 букв
# Марина
elif len(name) == 6:
print("длиною в 6 букв")
# Вывод программы: длиною в 6 букв
else:
print("короче 6 букв")
# Вывод программы:
# длиннее 6 букв
# Марина
# длиною в 6 букв
Упражнения
Решите уравнение x^5 - 3x^2 - 20=0 . Известно, что решение x - целое число от -10 до 10.
for x in range(-10, 11): # чтобы последнее число в цикле было 10
# допишите код
for x in range(-10, 11): # чтобы последнее число в цикле было 10
if x**5 - 3*x**2 - 20 == 0:
print('Решение уравнения x**5 - 3*x**2 - 20 = 0:')
print('x =', x)
# Вывод программы:
# Решение уравнения x**5 - 3*x**2 - 20 = 0:
# x = 2
Домашние задания
Перемножьте все четные числа от 1 до 100.
Подсказка: ответ начинается на 3424322470.....
***
Высота ракеты от времени при взлете от времени (недалеко от земли) зависит так:
-\frac{gt^2}{2} + \frac{u}{a} * (1 - (1 - at)(1 + \ln( \frac{1}{1-at} ))) .
Эта функция для конкретной ракеты с её параметрами u, a, k и известным ускорением свободного падения g уже написана - она выдает высоту вметрах!
Ваше задание:
Для каждой секунды от нулевой до 240-ой:
- посчитать высоту в метрах, где находится ракета, вызвав функцию height и подав в нее один параметр - число секунд:
- вывести на экран время в секундах и высоту в километрах
- в зависимости от высоты, вывести на экран, в какой части атмосферы находится ракета.
Напишите код так, чтобы он выводил на экран информацию, в какой части атмосферы сейчас находится ракета. Части атмосферы (приблизительно):
- тропосфера - от 0 до 20 км;
- стратосфера - от 20 до 50 км;
- мезосфера - от 50 до 85 км;
- термосфера - от 85 до 800 км;
- экзосфера - от 800 до 3000 км;
- космос - выше 3000 км.
from math import log
def h(t, u=4000, a=1/360, k=0.9, g=9.81):
return -g*t**2/2 + u/a * (1 - (1 - a*t)* (1 + log(1/(1-a*t))))
# допишите код, где это необходимо
for t in ...:
h_km = ...
print...
if ...
print...
elif ...
...
else:
...