90.83K
Категория: ПрограммированиеПрограммирование

цикл While и Строки. Решение задач

1.

Решение задач на тему :
цикл While и Строки.

2.

Цикл While. №1
Трискайдекафобия — боязнь числа 13. В особо сложных
формах пациент боится и всех чисел, кратных 13.
Дано число N. Выведите все целые числа по возрастанию,
начиная с числа N, пока не встретится число, кратное 13. Его
выводить не нужно.
a=int(input())
while a%13!=0:
print(a)
a+=1

3.

№2.
Последовательность Фибоначчи определяется так:
ϕ0=0,ϕ1=1,ϕn=ϕn−1+ϕn−2
Дано натуральное число A. Определите, каким по
счету числом Фибоначчи оно является, то есть
выведите такое число n, что ϕn=A. Если A не является
числом Фибоначчи, выведите число −1.

4.

a = int(input())
if a == 0:
print(0)
else:
fib_prev, fib_next = 0, 1
n=1
while fib_next <= a:
if fib_next == a:
print(n)
break
fib_prev, fib_next = fib_next, fib_prev +
fib_next
n += 1
else:
print(-1)

5.

№3.
Дано натуральное число N. Выведите слово YES, если число
N является точной степенью двойки, или слово NO в
противном случае.
Операцией возведения в степень пользоваться нельзя!
a = int(input())
n=1
i=1
while a>n:
n=n*2
i+=1
if a==n:
print('YES')
else:
print('NO')

6.

№4.
Вклад в банке составляет x рублей. Ежегодно он
увеличивается на p процентов, после чего дробная часть
копеек отбрасывается. Определите, через сколько лет вклад
составит не менее y рублей.
x = int(input())
p = int(input())
y = int(input())
i=0
while x < y:
x *= 1 + p / 100
x = int(100 * x) / 100
i += 1
print(i)

7.

№5.
Дано целое число, не меньшее 2. Выведите его
наименьший простой делитель.
N = int(input())
s=1/2
a=N
b=int(N**s)
for i in range(2,b+1) :
if N%i == 0:
if a > i :
a=i
print(a)

8.

№6.
По данному целому числу N распечатайте все
квадраты натуральных чисел, не превосходящие
N, в порядке возрастания.
n = int(input())
i=1
while i ** 2 <= n:
print(i ** 2)
i += 1

9.

№7.
Последовательность состоит из натуральных чисел и завершается числом 0.
Определите значение второго минимального по величине элемента в этой
последовательности, то есть элемента, который будет наименьшим, если из
последовательности удалить наименьший элемент.
Последнее число 0 не учитывается. Гарантируется, что в последовательности
есть хотя бы два элемента (кроме завершающего числа 0).
m1=10**9
m2=10**9
e=int(input())
while e!=0:
if e<m1:
m2=m1
m1=e
elif e<m2:
m2=e
e=int(input())
print(m2)

10.

№8.
Последовательность состоит из натуральных чисел и
завершается числом 0. Определите, сколько
элементов этой последовательности больше
предыдущего элемента.
prev = int(input())
answer = 0
while prev != 0:
next = int(input())
if next != 0 and prev < next:
answer += 1
prev = next
print(answer)

11.

№9.
Последовательность состоит из натуральных чисел и
завершается числом 0. Определите, сколько
элементов этой последовательности являются
чётными.
k=0
n=-1
while n!=0:
n=int(input())
if n%2==0:
k+=1
print(k-1)

12.

№10.
Элемент последовательности называется строгим локальным
максимумом, если он строго больше предыдущего и
последующего элементов последовательности. Первый и
последний элемент последовательности не являются
локальными максимумами.
e=int(input())
p=e
n=e
c=0
while e!=0:
if p>n and p>e:
c+=1
n=p
p=e
e=int(input())
print(c)

13.

№11.
Определите среднее значение всех элементов
последовательности, завершающейся числом 0. Сам
ноль в последовательность не входит.
sum = 0
len = 0
element = int(input())
while element != 0:
sum += element
len += 1
element = int(input())
print(sum / len)

14.

№12.
Последовательность состоит из натуральных чисел,
причем какое-то из чисел составляет более половины
от общего числа членов последовательности. Найдите
это число.
ans = 0
count = 0
elem = int(input())
while elem != 0:
if count == 0:
ans = elem
count += 1
elif elem == ans:
count += 1
else:
count -= 1
elem = int(input())
print(ans)

15.

№13.
Имеется неограниченное количество монет в 1, 2, 5, 10
рублей. Определите, сколькими способами можно выдать
сдачу в n рублей. Например, 5 рублей можно выдать четырьмя
способами: 5=2+2+1=2+1+1+1=1+1+1+1+1.
s = int(input())
cnt = 0
for a in range(10):
for b in range(20):
for c in range(50):
for d in range(100):
if a*10+b*5+c*2+d == s:
cnt+=1
print(cnt)

16.

№14.
Имеется неограниченное количество монет в 1, 2, 5,
10 рублей. Определите, сколькими способами
можно выдать сдачу в n рублей. Например, 5 рублей
можно выдать четырьмя способами:
5=2+2+1=2+1+1+1=1+1+1+1+1.
s=int(input())
a=0
s5=0
while s5<=s:
s1=s-s5
a+=(s1//2+1)*(s5//10+1)
s5+=5
print(a)

17.

Строки №1.
Дана строка, состоящая из n цифр (т.е. однозначных
чисел), между которыми стоит n−1 знак операции,
каждый из которых может быть либо +, либо −.
Вычислите значение данного выражения.
s=input()
a=int(s[0])
for i in range (2, len(s), 2):
if s[i-1]=='+':
a+=int(s[i])
else:
a-=int(s[i])
print(a)

18.

№2.
Посчитайте заданные характеристики строки. Циклы
использовать нельзя.
Входные данные
Дана строка, состоящая из строчных и прописных букв
латинского алфавита. Гарантируется, что длина строки не
меньше 5 и не больше 100 символов.
s = input()
print(s[2])
print(s[-2])
print(s[:5])
print(s[:-2])
print(s[::2])
print(s[1::2])
print(s[::-1])
print(s[::-2])
print(len(s))

19.

№3.
Напишите программу, которая определяет, является ли
введённое слово (без пробелов) палиндромом, то есть верно
ли, что оно читается одинаково слева направо и справа
налево.
s = str(input())
x = len(s)
i=0
x=x-1
k=0
while x - i >= i:
if s[x - i] == s[i]:
i += 1
else:
k=1
break
if k == 1:
print("NO")
else:
print("YES")

20.

№4
Дана строка. Выведите на одной строке сначала
символы, стоящие на чётных позициях, а потом на
нечётных.
s=input()
a=""
for i in range (0, len(s), 2):
a+=s[i]
for i in range (1, len(s), 2):
a+=s[i]
print (a)

21.

№5.
Дана строка. Требуется найти самую длинную её
подстроку, у которой совпадает первый и последний
символы. Если подходит несколько подстрок, то
выведите любую из них.
s=input()
a=''
for i in range(len(s)):
j=s.rfind(s[i])+1
if j-i>len(a):
a=s[i:j]
print(a)

22.

№6.
Дана строка. Замените в этой
строке все цифры 1 на слово 'one'.
print(input().replace('1', 'one'))

23.

№7.
Дана строка, состоящая из слов,
разделённых пробелами. Определите,
сколько в ней слов. Используйте для решения
задачи метод count.
print(input().count(' ') + 1)

24.

№8.
Дана строка. Замените в этой строке все появления
буквы h на букву H, кроме первого и последнего
вхождения.
s = input()
a = s[:s.find('h') + 1]
b = s[s.find('h') + 1:s.rfind('h')]
c = s[s.rfind('h'):]
s = a + b.replace('h', 'H') + c
print(s)

25.

№9.
Дана строка. Получите новую строку, вставив
между всеми парами соседних символов
исходной строки символ ∗.
s=input()
print(*('*'.join(s).split()))
English     Русский Правила