Skip to content

Lesson01 solution #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions hw01_easy.py
Original file line number Diff line number Diff line change
@@ -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 лет")
51 changes: 51 additions & 0 deletions hw01_hard.py
Original file line number Diff line number Diff line change
@@ -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)

100 changes: 100 additions & 0 deletions hw01_normal.py
Original file line number Diff line number Diff line change
@@ -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()