From c3a78a0e09d8edd3f0d7b9cb74cc6842b6ad54be Mon Sep 17 00:00:00 2001 From: Shamil Salakhetdinov Date: Fri, 1 Mar 2019 12:31:51 +0300 Subject: [PATCH 1/4] hw01 easy task solution --- hw01_easy.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 hw01_easy.py diff --git a/hw01_easy.py b/hw01_easy.py new file mode 100644 index 0000000..731fbc0 --- /dev/null +++ b/hw01_easy.py @@ -0,0 +1,100 @@ +import math + +__author__ = 'Salakhetdinov Shamil' + +# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. +# Например, дается x = 58375. +# Нужно вывести максимальную цифру в данном числе, т.е. 8. +# Подразумевается, что мы не знаем это число заранее. +# Число приходит в виде целого беззнакового. +# Подсказки: +# * постарайтесь решить задачу с применением арифметики и цикла while; +# * при желании и понимании решите задачу с применением цикла for. +# +# Task1. Solution 1 +# +print("Task1. Solution 1:") +maxDigit = 0 +x = 58375 +print(f"Source value: ", x) +while x > 0: + if x % 10 > maxDigit: + maxDigit = x % 10 + x = x // 10 +print(f"maxDigit = {maxDigit}") +print() +# +# Task1. Solution 2 +# +print("Task1. Solution 2:") +maxDigit = 0 +x = 58375 +print(f"Source value: ", x) +for c in str(x): + if (int(c) > maxDigit): + maxDigit = int(c) +print(f"maxDigit = {maxDigit}") + +# Задача-2: Исходные значения двух переменных запросить у пользователя. +# Поменять значения переменных местами. Вывести новые значения на экран. +# Решите задачу, используя только две переменные. +# Подсказки: +# * постарайтесь сделать решение через действия над числами; +# * при желании и понимании воспользуйтесь синтаксисом кортежей Python. +a = input('Enter a value:') +b = input('Enter b value:') +a,b = b,a +print(f"a={a}, b={b}") + +# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида +# ax² + bx + c = 0. +# Коэффициенты уравнения вводятся пользователем. +# Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math: +# import math +# math.sqrt(4) - вычисляет корень числа 4 +def quandraticEquationSolver(a,b,c): + x1 = None + x2 = None + + d = math.pow(b,2) - 4*a*c + + if d > 0: + x1 = (-b + math.sqrt(d)) / (2*a) + x2 = (-b - math.sqrt(d)) / (2*a) + elif d == 0: + x1 = x2 = -b / (2*a) + + + print(f"a = {a}, b = {b}, c = {c}") + print(f"Source equation: {a}x**2 + {b}x + {c} = 0") + print(f"discriminant={d}") + print(f"x1 = {x1}") + print(f"x2 = {x2}") + print("----------") + if (d >= 0): + print(f"Test x1: {a*math.pow(x1,2)+b*x1+c} == 0 => {a*math.pow(x1,2)+b*x1+c == 0}") + print(f"Test x2: {round(a*math.pow(x2,2)+b*x2+c,3)} == 0 => {round(a*math.pow(x2,2)+b*x2+c,3) == 0} ") + else: + print(f"No real solution for negative discriminant = {d}") + + +a = 1 +b = 3 +c = 3 +print("--- Test case #1 ---") +quandraticEquationSolver(a,b,c) +print() + +a = -6 +b = -5 +c = -1 +print("--- Test case #2 ---") +quandraticEquationSolver(a,b,c) +print() + +a = 1 +b = -6 +c = 9 +print("--- Test case #3 ---") +quandraticEquationSolver(a,b,c) +print() From a0a51fa83cfd8d0d9ef11d6b317a0eb9e5a446d4 Mon Sep 17 00:00:00 2001 From: Shamil Salakhetdinov Date: Fri, 1 Mar 2019 12:33:00 +0300 Subject: [PATCH 2/4] hw01 normal task solution --- hw01_normal.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 hw01_normal.py diff --git a/hw01_normal.py b/hw01_normal.py new file mode 100644 index 0000000..731fbc0 --- /dev/null +++ b/hw01_normal.py @@ -0,0 +1,100 @@ +import math + +__author__ = 'Salakhetdinov Shamil' + +# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. +# Например, дается x = 58375. +# Нужно вывести максимальную цифру в данном числе, т.е. 8. +# Подразумевается, что мы не знаем это число заранее. +# Число приходит в виде целого беззнакового. +# Подсказки: +# * постарайтесь решить задачу с применением арифметики и цикла while; +# * при желании и понимании решите задачу с применением цикла for. +# +# Task1. Solution 1 +# +print("Task1. Solution 1:") +maxDigit = 0 +x = 58375 +print(f"Source value: ", x) +while x > 0: + if x % 10 > maxDigit: + maxDigit = x % 10 + x = x // 10 +print(f"maxDigit = {maxDigit}") +print() +# +# Task1. Solution 2 +# +print("Task1. Solution 2:") +maxDigit = 0 +x = 58375 +print(f"Source value: ", x) +for c in str(x): + if (int(c) > maxDigit): + maxDigit = int(c) +print(f"maxDigit = {maxDigit}") + +# Задача-2: Исходные значения двух переменных запросить у пользователя. +# Поменять значения переменных местами. Вывести новые значения на экран. +# Решите задачу, используя только две переменные. +# Подсказки: +# * постарайтесь сделать решение через действия над числами; +# * при желании и понимании воспользуйтесь синтаксисом кортежей Python. +a = input('Enter a value:') +b = input('Enter b value:') +a,b = b,a +print(f"a={a}, b={b}") + +# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида +# ax² + bx + c = 0. +# Коэффициенты уравнения вводятся пользователем. +# Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math: +# import math +# math.sqrt(4) - вычисляет корень числа 4 +def quandraticEquationSolver(a,b,c): + x1 = None + x2 = None + + d = math.pow(b,2) - 4*a*c + + if d > 0: + x1 = (-b + math.sqrt(d)) / (2*a) + x2 = (-b - math.sqrt(d)) / (2*a) + elif d == 0: + x1 = x2 = -b / (2*a) + + + print(f"a = {a}, b = {b}, c = {c}") + print(f"Source equation: {a}x**2 + {b}x + {c} = 0") + print(f"discriminant={d}") + print(f"x1 = {x1}") + print(f"x2 = {x2}") + print("----------") + if (d >= 0): + print(f"Test x1: {a*math.pow(x1,2)+b*x1+c} == 0 => {a*math.pow(x1,2)+b*x1+c == 0}") + print(f"Test x2: {round(a*math.pow(x2,2)+b*x2+c,3)} == 0 => {round(a*math.pow(x2,2)+b*x2+c,3) == 0} ") + else: + print(f"No real solution for negative discriminant = {d}") + + +a = 1 +b = 3 +c = 3 +print("--- Test case #1 ---") +quandraticEquationSolver(a,b,c) +print() + +a = -6 +b = -5 +c = -1 +print("--- Test case #2 ---") +quandraticEquationSolver(a,b,c) +print() + +a = 1 +b = -6 +c = 9 +print("--- Test case #3 ---") +quandraticEquationSolver(a,b,c) +print() From c8fb393a931926bc623f7bde03dc590551c59856 Mon Sep 17 00:00:00 2001 From: Shamil Salakhetdinov Date: Fri, 1 Mar 2019 12:34:12 +0300 Subject: [PATCH 3/4] hw01 hard task solution --- hw01_hard.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 hw01_hard.py diff --git a/hw01_hard.py b/hw01_hard.py new file mode 100644 index 0000000..a0164fe --- /dev/null +++ b/hw01_hard.py @@ -0,0 +1,51 @@ +# Задание-1: +# Пользователь вводит число определите, является ли данное число простым. Делится только на себя и на единицу +def IsPrime(n): + if n == 2 or n == 3 or n == 5: return True + if n == 1 or n %2 == 0 or n % 3== 0 : return False + + i = 5 + while i*i <= n: + if (n % i == 0 or n % (i+2) == 0): + return False + i = i+6 + + return True + +n = 2 +while n > 1: + n = int(input("Input any integer number (<=1 - Quit): ")) + print (f'{n} is prime = {IsPrime(n)}') + +# test - 2 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 +# for i in range(100): +# if IsPrime(i): print(f'{i}', end=' ') + +# Задание-2 +# Найдите n-ое число Фибоначчи +def NthFibonacciNumber(n): + if (n <= 1): return n + return NthFibonacciNumber(n-1) + NthFibonacciNumber(n-2) + +#test - 1 1 2 3 5 8 13 21 34 55 89 144 +for n in range(12): print(f'{NthFibonacciNumber(n+1)}', end = ' ') + + +# Задание-3 +# Вывести на экран: +# AAABBBAAABBBAAABBB +# BBBAAABBBAAABBBAAA +# AAABBBAAABBBAAABBB +# (таких строк n, в каждой строке m троек AAA) +def AAABBBPrinter(n, m): + for i in range(n): + for j in range(m): + if (i % 2 == 0): + print("AAABBB", end = "") + else: + print("BBBAAA", end = "") + print() + +# test +# AAABBBPrinter(5,3) + From 6e974d36330875b5ac0edfac810128e9f6c0ccdf Mon Sep 17 00:00:00 2001 From: Shamil Salakhetdinov Date: Fri, 1 Mar 2019 12:34:57 +0300 Subject: [PATCH 4/4] hw01 easy task solution --- hw01_easy.py | 128 +++++++++++++++++---------------------------------- 1 file changed, 43 insertions(+), 85 deletions(-) diff --git a/hw01_easy.py b/hw01_easy.py index 731fbc0..21d4623 100644 --- a/hw01_easy.py +++ b/hw01_easy.py @@ -1,100 +1,58 @@ -import math __author__ = 'Salakhetdinov Shamil' -# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. -# Например, дается x = 58375. -# Нужно вывести максимальную цифру в данном числе, т.е. 8. -# Подразумевается, что мы не знаем это число заранее. -# Число приходит в виде целого беззнакового. +# Задача-1: Дано произвольное целое число (число заранее неизвестно). +# Вывести поочередно цифры исходного числа (порядок вывода цифр неважен). # Подсказки: # * постарайтесь решить задачу с применением арифметики и цикла while; -# * при желании и понимании решите задачу с применением цикла for. +# * при желании решите задачу с применением цикла for. + # # Task1. Solution 1 # -print("Task1. Solution 1:") -maxDigit = 0 -x = 58375 -print(f"Source value: ", x) -while x > 0: - if x % 10 > maxDigit: - maxDigit = x % 10 - x = x // 10 -print(f"maxDigit = {maxDigit}") -print() +x = 1234567890 +z = x +while (z > 0): + print (z % 10) + z = z // 10 + # # Task1. Solution 2 # -print("Task1. Solution 2:") -maxDigit = 0 -x = 58375 -print(f"Source value: ", x) +x = 1234567890 for c in str(x): - if (int(c) > maxDigit): - maxDigit = int(c) -print(f"maxDigit = {maxDigit}") + print(c) # Задача-2: Исходные значения двух переменных запросить у пользователя. # Поменять значения переменных местами. Вывести новые значения на экран. -# Решите задачу, используя только две переменные. -# Подсказки: -# * постарайтесь сделать решение через действия над числами; -# * при желании и понимании воспользуйтесь синтаксисом кортежей Python. -a = input('Enter a value:') -b = input('Enter b value:') -a,b = b,a -print(f"a={a}, b={b}") - -# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида -# ax² + bx + c = 0. -# Коэффициенты уравнения вводятся пользователем. -# Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math: -# import math -# math.sqrt(4) - вычисляет корень числа 4 -def quandraticEquationSolver(a,b,c): - x1 = None - x2 = None - - d = math.pow(b,2) - 4*a*c - - if d > 0: - x1 = (-b + math.sqrt(d)) / (2*a) - x2 = (-b - math.sqrt(d)) / (2*a) - elif d == 0: - x1 = x2 = -b / (2*a) - - - print(f"a = {a}, b = {b}, c = {c}") - print(f"Source equation: {a}x**2 + {b}x + {c} = 0") - print(f"discriminant={d}") - print(f"x1 = {x1}") - print(f"x2 = {x2}") - print("----------") - if (d >= 0): - print(f"Test x1: {a*math.pow(x1,2)+b*x1+c} == 0 => {a*math.pow(x1,2)+b*x1+c == 0}") - print(f"Test x2: {round(a*math.pow(x2,2)+b*x2+c,3)} == 0 => {round(a*math.pow(x2,2)+b*x2+c,3) == 0} ") - else: - print(f"No real solution for negative discriminant = {d}") - - -a = 1 -b = 3 -c = 3 -print("--- Test case #1 ---") -quandraticEquationSolver(a,b,c) -print() - -a = -6 -b = -5 -c = -1 -print("--- Test case #2 ---") -quandraticEquationSolver(a,b,c) -print() - -a = 1 -b = -6 -c = 9 -print("--- Test case #3 ---") -quandraticEquationSolver(a,b,c) -print() +# Подсказка: +# * постарайтесь сделать решение через дополнительную переменную +# или через арифметические действия +# Не нужно решать задачу так: +# print("a = ", b, "b = ", a) - это неправильное решение! +a = int(input('Enter a value:')) +b = int(input('Enter b value:')) +#using variable +print('Solution using a temp variable:') +print(f"Before: a={a}, b={b}") +x = a +a = b +b = x +print(f"After: a={a}, b={b}") + +#no variables +print('Solution without using a temp variable:') +print(f"Before: a={a}, b={b}") +a = a + b +b = a - b +a = a - b +print(f"After: a={a}, b={b}") + +# Задача-3: Запросите у пользователя его возраст. +# Если ему есть 18 лет, выведите: "Доступ разрешен", +# иначе "Извините, пользование данным ресурсом только с 18 лет" +age = int(input('Input your age:')) +if age >= 18: + print ("Доступ разрешен") +else: + print ("Извините, пользование данным ресурсом только с 18 лет")