Python · Синтаксис · Початковий рівень
Цикл while
Вправи по циклу while у Python: повторення дій, лічильники, суми чисел, введення до потрібної умови, break, перебір строк та базова обробка символів.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Лічильники, акумулятори і патерн «сторожового значення»
#Обхід рядків за допомогою while
#Швидкий довідник: цикл while
#Вправи:
Числа від 1 до 10.
#i = 1
Рішення
i = 1
while i <= 10:
print(i)
i += 1
# або для прикладу можна поставити умову всередині циклу в if умовах
# і перервати цикл через break. У цьому випадку звісно краще перший варіант,
# але варіанти потрібно подивитися для розвитку фантазії:
i = 1
while True:
if i <= 10:
print(i)
i += 1
else:
break
# те саме, тільки скомпоновано по-іншому:
i = 1
while True:
if i > 10:
break
print(i)
i += 1
# у такому випадку else не потрібен (просто зайвий), тому що
# у випадку break цикл перерветься.
# це було для того, щоб пропрацювати вашу фантазію на варіанти.
Зворотний відлік від 10.
#i = 10
Рішення
i = 10
while i >= 1:
print(i)
i -= 1
# або так можна: використовувати умову більше нуля
i = 10
while i > 0:
print(i)
i -= 1
Числа до введеного значення.
#n = int(input("Введіть число: "))
i = 1
Рішення
n = int(input("Введіть число: "))
i = 1
while i <= n:
print(i)
i += 1
# або так можна: почати з нуля, але друкувати наступне число
n = int(input("Введіть число: "))
i = 0
while i < n:
i += 1
print(i)
Тільки парні до числа.
#n = int(input("Введіть число: "))
i = 1
Рішення
n = int(input("Введіть число: "))
i = 1
while i <= n:
if i % 2 == 0:
print(i)
i += 1
# другий варіант: одразу йти тільки по парних числах
n = int(input("Введіть число: "))
i = 2
while i <= n:
print(i)
i += 2
Сума від 1 до 100.
#i = 1 total = 0
Рішення
i = 1
total = 0
while i <= 100:
total += i
i += 1
print("Сума:", total)
Сума до введеного числа.
#n = int(input("Введіть число: "))
i = 1
total = 0
Рішення
n = int(input("Введіть число: "))
i = 1
total = 0
while i <= n:
total += i
i += 1
print("Сума:", total)
# або так можна: додавати число і зменшувати його
n = int(input("Введіть число: "))
total = 0
while n > 0:
total += n
n -= 1
print("Сума:", total)
Таблиця множення.
#n = int(input("Введіть число: "))
i = 1
Рішення
n = int(input("Введіть число: "))
i = 1
while i <= 10:
print(f"{n} x {i} = {n * i}")
i += 1
# або так можна: спочатку порахувати добуток
n = int(input("Введіть число: "))
i = 1
while i <= 10:
result = n * i
print(f"{n} x {i} = {result}")
i += 1
Пароль до правильного введення.
#password = input("Введіть пароль: ")
Рішення
password = input("Введіть пароль: ")
while password != "python":
password = input("Невірно. Введіть пароль ще раз: ")
print("Пароль прийнято")
# АБО
password = input("Введіть пароль: ")
while True:
if password == "python":
break
password = input("Невірно. Введіть пароль ще раз: ")
print("Пароль прийнято")
# ЗНОВУ Ж ТАКИ ПОВТОРЮ такий момент, з розумінням якого бувають проблеми:
1) Створювати (або пересоздавати) змінні всередині циклу можна, наприклад password = ...
При переході на нове "коло" циклу, значення у змінній просто заміниться на нове.
Наприклад, цикл, який нескінченно робить print у термінал чисел від 1 до 5:
num = 1
while True:
if num == 6:
num = 1
print(num)
num += 1
input() # просто щоб гальмувати виконання до будь-якого вводу.
# input нікуди не зберігається і не використовується.
Сума чисел до нуля.
#total = 0
num = int(input("Введіть число: "))
Рішення
total = 0
num = int(input("Введіть число: "))
while num != 0:
total += num
num = int(input("Введіть число: "))
print("Сума:", total)
# або так:
total = 0
while True:
num = int(input("Введіть число: "))
if num == 0:
break
total += num
print("Сума:", total)
Підрахунок цифр у числі.
#num = int(input("Введіть число: "))
count = 0
Рішення
num = int(input("Введіть число: "))
count = 0
if num == 0:
count = 1
else:
if num < 0:
num = -num # змінюємо знак на + (- на - = +)
while num > 0:
count += 1
num //= 10
print("Кількість цифр:", count)
# або так можна без циклу, якщо пам’ятати про рядкове представлення числа
num = int(input("Введіть число: "))
text = str(abs(num))
count = len(text)
print("Кількість цифр:", count)
Слово навпаки.
#word = "иладеп"
Рішення
# 1)
word = "иладеп"
print(word[::-1])
# 2)
word = "иладеп"
drow = ""
index = len(word) - 1
while index > -1:
drow += word[index]
index -= 1
print(drow)
# 3)
word = "иладеп"
index = len(word) - 1
while index > -1:
print(word[index], end="")
index -= 1
else:
print() # наприкінці перенести рядок у терміналі
Текст між однаковими символами.
#text = input("Введіть текст: ")
symbol = input("Введіть символ який по краях фрагмента тексту: ")
Рішення
text = input("Введіть текст: ")
symbol = input("Введіть символ який по краях фрагмента тексту: ")
start_index = text.index(symbol) + 1 # індекс початку отримали
new_text = ""
while start_index < len(text):
char = text[start_index] # беремо символ з тексту
if char == symbol: # коли зустрівся "другий" символ то все.
break
new_text += char
start_index += 1
print(new_text)
# АБО тільки зрізами. Уважно з індексами та проміжним рядком.
text = input("Введіть текст: ")
symbol = input("Введіть символ який по краях фрагмента тексту: ")
start = text.index(symbol) + 1 # індекс початку отримали
# давайте одразу зріжемо з цього моменту до кінця тексту:
part = text[start:] # зріз від start до кінця
stop = part.index(symbol) # отримуємо індекс другого входження symbol
result = text[start:stop + start]
# або
result = part[:stop]
print(result)
Сходинки з букв.
#text = "ступеньки"
Рішення
text = "сходинки"
# перший варіант:
index = 0
while index < len(text):
for_print = "-" * index + text[index]
print(for_print)
index += 1
# другий варіант:
index = 0
while index < len(text):
# метод рядків rjust додає до потрібної довжини зліва те що ви вказали в ньому
char = text[index]
for_print = char.rjust(index+1, " ")
print(for_print)
index += 1
# другий варіант скорочено те саме, до об’єкта символу застосовуємо метод:
index = 0
while index < len(text):
for_print = text[index].rjust(index+1, " ")
print(for_print)
index += 1
# сходинки навпаки:
text = text[::-1]
index = 0
while index < len(text):
for_print = text[index].rjust(len(text) - index, " ")
print(for_print)
index += 1
Видалення пунктуації з тексту.
#punctuation = "!@#$%^&./,?|" text = "Мабуть на цій вправі закінчимо. Досить! Ми хочемо відпочивати! #@&#@&!!!"
Рішення
punctuation = "!@#$%^&./,?|"
text = "Мабуть на цій вправі закінчимо. Досить! Ми хочемо відпочивати! #@&#@&!!!"
new_text = ""
idx = 0
while idx < len(text):
char = text[idx]
if char not in punctuation:
new_text += char
idx += 1
else:
text = text.strip() # почистимо від пробілів по боках. Тільки по боках.
print(new_text)