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