Учебно-методические материалы для студентов кафедры АСОИУ

Учебные программы » Информационные технологии » Программирование

Python 3. Циклы. Операторы while и for

Задача: Напишите программу, которая вводит два целых числа и находит их произведение, не используя операцию умножения. Учтите, что числа могут быть отрицательными.

Решение

a, b = map(int, input().split())
res, s = 0, 1
if b<0:
    b = -b
    s = -1
while b:
    res = res + a
    b = b - 1
if s < 0:
    res = -res 
print (res)

Задача: Напишите программу, которая вводит натуральное число N и выводит первые N чётных натуральных чисел. Программа должна вывести в одну строчку N первых чётных натуральных чисел, разделив их пробелами.

Решение

n = int(input())
for i in range (1,2*n,2):
    print (i+1)

Задача: Напишите программу, которая вводит натуральные числа a и b и выводит сумму квадратов натуральных чисел в диапазоне от a до b.

Решение

a, b = map(int, input().split())
if a > b:
    t = a
    a = b
    b = t
s = 0
for i in range (a, b+1):
    s = s+i*i
print (s)

Задача: Напишите программу, которая вводит четыре натуральных числа (a, b, c и d) и находит все пятизначные числа, которые при делении на a дают в остатке b , а при делении на c дают в остатке d .

Входные данные Первая входная строка содержит два натуральных числа, разделённые пробелами: a и b. Вторая строка содержит натуральные числа c и d, также разделённые пробелом. Гарантируется, что 0 ≤ b ≤ a и 0 ≤ d ≤ c. Выходные данные Программа должна вывести в одну строчку через пробел все пятизначные натуральные числа, которые при делении на a дают в остатке b, а при делении на c дают в остатке d . Если таких чисел нет, программа должна вывести число -1.

Решение

x = input().split() 
y = input().split()

a = int(x[0])
b = int(x[1])
c = int(y[0])
d = int(y[1])

if a==0 or c==0: 	
	print(-1)
else:
	res = ''
	for i in range(10000, 99999):
		if (i%a == b) and (i%c == d):
			res = res+" "+str(i)
	
	res = res.strip()
	
	if res == '': 
		print(-1)	
	else: 
		print(res)	

Задача: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в K-ю степень (где K – количество цифр в числе) равна самому числу. Например:
153 = 1^3 + 5^3 + 3^3
Напишите программу, которая находит все числа Армстронга на отрезке [a, b].

Входные данные: Входная строка содержит два натуральных числа – значения a и b, разделённых пробелами. Гарантируется, что a ≤ b.

Выходные данные: Программа должна вывести в одну строчку все числа Армстронга на отрезке [a, b] , разделив их пробелами. Если таких чисел нет, программа должна вывести число -1.

Решение

x = input().split()
 
a = int(x[0])
b = int(x[1])
 
'''
a = 100
b = 400
'''
 
if a > b:
    t = a
    a = b
    b = t
 
if a<0:
    print (-1)
else:
    res = ""
         
    for i in range (a, b+1):
        s = 0
        t = len(str(i))
        for j in str(i):
            s = s + int(j) ** t            
        if s == i:
            res = res + str(s) + " "
 
    res = res.strip()
 
    if res == "":
        print(-1)  
    else:
        print(res)           

Задача: Напишите программу, которая считает количество чётных цифр введённого числа.

Решение

n = int(input())
n = int(n)
k = 0
m = 0
while n>0:
    
    if n%2==0:
        k+=1
    else:
        m+=1
    n=n//10
print(k)

Задача: Напишите программу, которая определяет, верно ли, что введённое число содержит две одинаковых цифры, стоящие рядом (как, например, 221).

Решение

n = int(input())
res = "NO"
d1 = 0
d2 = 0
while n > 0:
    d1 = n%10
    d2 = n//10%10
    if d1 == d2:
        res = "YES"
    n = n//10
print (res)

Задача: Напишите программу, которая определяет, верно ли, что введённое число содержит по крайней мере две одинаковых цифры, возможно, не стоящие рядом (как, например, 212). Программа должна вывести слово 'YES', если в числе есть две одинаковые цифры, и слово 'NO', если такой пары цифр нет.

Решение

n = int(input())
res = "NO"
d1 = 0
d2 = 0
while n>0:
     d1 = n%10
     m = n//10
     while m > 0:
         d2 = m%10
         if d1 == d2:
             res = "YES"
         m = m//10
     n = n//10
print (res)

Задача: Модифицированный алгоритм Евклида для вычисления наибольшего общего делителя двух натуральных чисел, формулируется так: нужно заменять большее число на остаток от деления большего на меньшее до тех пор, пока остаток не станет равно нулю; тогда второе число и есть НОД. Напишите программу, которая реализует этот алгоритм.

Входные данные: Входная строка содержит два числа, разделённые пробелом – a и b .

Выходные данные: Программа должна вывести в одной строке два числа: сначала наибольший общий делитель двух введённых чисел, а затем – количество шагов цикла, которые были выполнены.

Решение

x = input().split() #Python 3.x

a = int(x[0])
b = int(x[1])

n = 0

while a!=0 and b!=0:
  if a > b:
    a = a % b
  else:
    b = b % a
  n+=1
	 
print (a+b, n)

Задача: Напишите программу, которая вычисляет сумму и произведение целых чисел, поданных на её вход. Ввод заканчивается числом 0.

Входные данные: Во входных строках записаны целые числа, по одному в каждой строке. В последней строке записано число 0.

Выходные данные: Программа должна вывести в одной строке сумму и произведение введённых чисел (не считая завершающий 0), разделив их пробелом.

Решение

summ, mul = 0, 1
while 1:
    c = int(input())
    if c == 0: break;
    summ += c
    mul *= c
print (summ,mul)

Задача: Напишите программу, которая вводит натуральное число N и определяет его факториал, то есть произведение натуральных чисел от 1 до N: N! = 1·2·{...}· N.

Решение

n = int(input())
f = 1
while n>1:
    f *= n
    n -= 1
print (f)

Задача: Напишите программу, которая выводит на экран все цифры числа, начиная с первой.

Входные данные: Входная строка содержит натуральное число N.

Выходные данные: Программа должна вывести все цифры введённого числа в одной строке, начиная с первой. Цифры отделяются пробелами.

Решение

n = int(input())
res = ""
while n>0:
    res = str(n%10)+ " " + res
    n = n//10
print (res.strip())

Задача: Напишите программу, которая вводит натуральные числа a и b и выводит все простые числа в диапазоне от a до b. Входная строка содержит два натуральных числа: a и b. Гарантируется, что a ≤ b. Программа должна вывести в одной строке через пробел все простые числа на отрезке [a, b]. Если таких чисел нет, программа должна вывести 0.

Решение

x = input().split()
a = int(x[0])
b = int(x[1])
if a == 0: a = 1
res = ""
for i in range(a, b + 1):
    for j in range(2,i):
        if i%j == 0:
            break
    else:
        res = res + " " + str(i)
if res != '':
    print (res)
else:
    print (0)

anonymous, 01.06.2017

Постоянный адрес этой страницы:

↑ В начало страницы