diff --git a/hw01_easy.py b/hw01_easy.py new file mode 100644 index 0000000..21d4623 --- /dev/null +++ b/hw01_easy.py @@ -0,0 +1,58 @@ + +__author__ = 'Salakhetdinov Shamil' + +# Задача-1: Дано произвольное целое число (число заранее неизвестно). +# Вывести поочередно цифры исходного числа (порядок вывода цифр неважен). +# Подсказки: +# * постарайтесь решить задачу с применением арифметики и цикла while; +# * при желании решите задачу с применением цикла for. + +# +# Task1. Solution 1 +# +x = 1234567890 +z = x +while (z > 0): + print (z % 10) + z = z // 10 + +# +# Task1. Solution 2 +# +x = 1234567890 +for c in str(x): + print(c) + +# Задача-2: Исходные значения двух переменных запросить у пользователя. +# Поменять значения переменных местами. Вывести новые значения на экран. +# Подсказка: +# * постарайтесь сделать решение через дополнительную переменную +# или через арифметические действия +# Не нужно решать задачу так: +# 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 лет") 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) + 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()