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

Python 3. Процедуры и функции. Оператор def

Здесь приведены возможные варианты решения ряда задач из учебника информатики К.Ю. Полякова и Е.А. Еремина. Дополнительную информацию об этом учебнике можно получить на авторском сайте (http://kpolyakov.spb.ru).

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

Решение

n = int(input())
n = abs(n)
def printDigits (n):
n = str (n)
for i in range (0, len(n)):
print (n[i])
printDigits(n)

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

Решение

def deviders(n):
res, r1, r2 = "","",""
d1, d2 = 1, n
while d1 != d2:
if n%d1 == 0:
d2 = n//d1
r1 = r1 + str(d1) + " "
r2 = str(d2) + " " + r2
d1 += 1
res = res + r1 + r2
return res.strip()
n = int(input())
n = abs(n)
print(deviders(n))

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

Решение

def dec2oct(n):
m = ""
while n != 0:
m = str(n%8) + m
n //= 8
return "{0:0>10}".format(m)
a = int(input())
print(dec2oct(a))

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

Решение

def dec2(n):
h, m = "", ""
while n != 0:
if n%16 == 15: h = "F"
elif n%16 == 14: h = "E"
elif n%16 == 13: h = "D"
elif n%16 == 12: h = "C"
elif n%16 == 11: h = "B"
elif n%16 == 10: h = "A"
else: h = str (n%16)
m = h + m
n //= 16
return "{0:0>4}".format(m) a = int(input())
print(dec2(a))

Задача: Простое число называется гиперпростым, если любое число, получающееся из него откидыванием нескольких последних цифр, тоже является простым. Например, число 733 – гиперпростое, так как и оно само, и числа 73 и 7 – простые. Напишите программу, которая определяет, верно ли, что переданное ей число N – гиперпростое. Программа должна вывести слово 'YES', если переданное её число – гиперпростое, и слово 'NO', если это число не гиперпростое. Учтите, что число 1 не считается простым. Используйте функции.

Решение

def isPrime(N):
res = 1
for i in range(2, N):
if N%i == 0: break
else: # for...else - is a valid python costruction
res = 0
return res
a = int(input())
out = 0
while a > 0:
if a == 1: out += 1
break
out += isPrime(a)
a //= 10
if out == 0:
print("YES")
else:
print("NO")

CC-BY-CA anonymous, 01.06.2017