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