diff --git a/Arrays/arrays.py b/Arrays/arrays.py new file mode 100644 index 0000000..f4c06ca --- /dev/null +++ b/Arrays/arrays.py @@ -0,0 +1,73 @@ +def myString(str, char): + count = 0 + + for c in str: + if char == c: + count += 1 + + return count + + +def mySum(array): + sum = 0 + for a in array: + sum += a + + return sum + + +def myMax(array): + max = array[0] + + for b in array: + if b > max: + max = b + + return max + + +def myMin(array): + min = array[0] + + for b in array: + if b <= min: + min = b + + return min + + +def menu(): + print("1. Сумма") + print("2. Максимум") + print("3. Минимум") + print("4. Подсчет кол-ва символов") + print("5. Выход") + + +A = [3, 4, 5, 6] +mystr = 'С Новым Кодом! Ура!' +char = '!' + +while True: + menu() + inp = input() + if inp.isnumeric(): + op = int(inp) + if 1 <= op <= 5: + if op == 1: + result = mySum(A) + elif op == 2: + result = myMax(A) + elif op == 3: + result = myMin(A) + elif op == 4: + result = myString(mystr, char) + elif op == 5: + print("Программа завершена") + break + + print(result) + else: + print("Операции под номером " + str(op) + " не существует!") + else: + print("Вы ввели какую-то глупость!") diff --git a/Tasks/find_second_max.py b/Excercises/find_second_max.py similarity index 100% rename from Tasks/find_second_max.py rename to Excercises/find_second_max.py diff --git a/Excercises/hw1.py b/Excercises/hw1.py new file mode 100755 index 0000000..4281e8c --- /dev/null +++ b/Excercises/hw1.py @@ -0,0 +1,31 @@ +# Развернуть строку (например "Abc" -> "cbA") +def invert_string(string): + str_left = "" + for i in range(len(string)): + str_left += string[-i-1] + return str_left + + +################################################# +def verifier(test_name, actual, expected): + print(test_name) + if actual != expected: + print("=======> FAILED! <=======") + print(f"Got value <{actual}>") + print(f"Expected value is <{expected}>") + else: + print("PASSED") + print() + + +test_string1 = "The World is not enough" +test_string2 = "Testing is key" + +test_palindrome1 = "Sir, I demand, I am a maid named Iris" +test_palindrome2 = "Satire: Veritas" +test_palindrome3 = "Saippuakivikauppias" + +string_tests = [test_string1, test_string2, test_palindrome1, test_palindrome2, test_palindrome3, ''] + +for i in range(len(string_tests)): + verifier(f"INVERT_STRING TEST {i+1}", invert_string(string_tests[i]), string_tests[i][::-1]) \ No newline at end of file diff --git a/Excercises/hw2.py b/Excercises/hw2.py new file mode 100755 index 0000000..10a20ff --- /dev/null +++ b/Excercises/hw2.py @@ -0,0 +1,45 @@ +# "Ручной" аналог функции split() +def split_string(string, separator): + result = [] + element = "" + for c in range(len(string)): + if c != separator: + element = c + else: + c = "" + result.append(element) + return result + + +################################################# +def verifier(test_name, actual, expected): + print(test_name) + if actual != expected: + print("=======> FAILED! <=======") + print(f"Got value <{actual}>") + print(f"Expected value is <{expected}>") + else: + print("PASSED") + print() + + +test_string1 = "The World is not enough" +test_string2 = "Testing is key" + +test_split1 = "1, 2, 3, 4, 5, 6, 7, 8, 9" +test_split2 = "1 2 3 4 5 6 7 8 9" +test_split3 = "bagahajemanbdneorijahdhrea4" + +split_string_tests = [test_split1, test_split2, test_split3, test_string1, test_string2, ''] + +for i in range(len(split_string_tests)): + separator = ',' + verifier(f"SPLIT_STRING (SEPARATOR='{separator}') TEST {i+1}", + split_string(split_string_tests[i], separator), + split_string_tests[i].split(separator)) + +for i in range(len(split_string_tests)): + separator = ' ' + verifier(f"SPLIT_STRING (SEPARATOR='{separator}') TEST {i+1}", + split_string(split_string_tests[i], separator), + split_string_tests[i].split(separator)) diff --git a/Excercises/main.py b/Excercises/main.py new file mode 100755 index 0000000..e6f1987 --- /dev/null +++ b/Excercises/main.py @@ -0,0 +1,177 @@ +# Сумма элементов массива +def sum_array(array): + # Что должна возвращать функция? + sum = 0 + + # Проводим вычисления + for a in array: + sum = sum + a + + # Вернуть значение + return sum + + +# Из суммы элементов с четным индексом вычесть элементы с нечетным индексом (0 - четный) +def sum_diff_array(array): + # Что должна возвращать функция? + result = 0 + + # Проводим вычисления + for e in range(len(array)): + if e % 2 == 0: + result = result + array[e] + else: + result = result - array[e] + + # Вернуть значение + return result + + +# Максимальное число из массива помножить на минимальное число из массива +def max_mul_min_array(array): + pass + + +# Развернуть строку (например "Abc" -> "cbA") +def invert_string(string): + pass + + +# Все буквы сделать заглавными (например "aBc" -> "ABC") +def to_upper_string(string): + # Что должна возвращать функция? + str1 = "" + + # Проводим вычисления + for c in string: + # Проверить, какая буква + if 97 <= ord(c) <= 122: + # Если маленькая - то превращаем в большую и добавляем в итоговую строку + str1 += chr(ord(c) - 32) + else: + # Если уже большая - то перенимаем букву в итоговую строку + # А если вообще не буква?! - Также перенимаем без изменений + str1 += c + + # Вернуть значение + return str1 + + +# Все буквы сделать прописными (например "aBc" -> "abc") +def to_lower_string(string): + pass + + +# Проверить, является ли строка палиндромом (независимо от больших/маленьких букв) +def check_palindrome(string): + pass + + +# Проверить, является ли строка палиндромом (независимо от больших/маленьких букв и знаков пунктуации/пробелов) +def check_palindrome_escaped(string): + pass + + +# "Ручной" аналог функции split() +def split_string(string, separator): + array = [] + for i in string: + if i != separator: + array.append(i) + array1 = array + return array1 + + +# "Ручной" аналог функции join() +def join_array(array, separator): + pass + + +################################################# +def verifier(test_name, actual, expected): + print(test_name) + if actual != expected: + print("=======> FAILED! <=======") + print(f"Got value <{actual}>") + print(f"Expected value is <{expected}>") + else: + print("PASSED") + print() + + +test_array1 = [6, 4, 7, -3, 6, -1, 5, 8, 4, -6, 8, 3, 6, 4, -7, 21, 6, 4, -1, 1] +test_array2 = [987, 342, -876, 182, -6534, 998, -11, 334, 0, 6654, -9901, 333, 111, 664] +test_array3 = [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10] + +test_string1 = "The World is not enough" +test_string2 = "Testing is key" + +test_palindrome1 = "Sir, I demand, I am a maid named Iris" +test_palindrome2 = "Satire: Veritas" +test_palindrome3 = "Saippuakivikauppias" + +test_split1 = "1, 2, 3, 4, 5, 6, 7, 8, 9" +test_split2 = "1 2 3 4 5 6 7 8 9" +test_split3 = "bagahajemanbdneorijahdhrea4" + +test_array4 = test_split1.split(',') +test_array5 = test_split2.split(' ') +test_array6 = test_split3.split('a') + +sum_array_tests = [test_array1, test_array2, test_array3, [], [0]] +string_tests = [test_string1, test_string2, test_palindrome1, test_palindrome2, test_palindrome3, ''] +palindrome_tests = [test_string1, test_string2, test_palindrome1, test_palindrome2, test_palindrome3, ''] +split_string_tests = [test_split1, test_split2, test_split3, test_string1, test_string2, ''] +join_array_tests = [test_array4, test_array5, test_array6, [], ['']] + +for i in range(len(sum_array_tests)): + verifier(f"SUM_ARRAY TEST {i+1}", sum_array(sum_array_tests[i]), sum(sum_array_tests[i])) + +for i in range(len(sum_array_tests)): + verifier(f"SUM_DIFF_ARRAY TEST {i+1}", sum_diff_array(sum_array_tests[i]), sum(sum_array_tests[i][0::2]) - sum(sum_array_tests[i][1::2])) + +for i in range(len(sum_array_tests)): + if len(sum_array_tests[i]) == 0: + verifier(f"MAX_MUL_MIN_ARRAY TEST {i + 1}", max_mul_min_array(sum_array_tests[i]), 0) + else: + verifier(f"MAX_MUL_MIN_ARRAY TEST {i+1}", max_mul_min_array(sum_array_tests[i]), max(sum_array_tests[i]) * min(sum_array_tests[i])) + +for i in range(len(string_tests)): + verifier(f"INVERT_STRING TEST {i+1}", invert_string(string_tests[i]), string_tests[i][::-1]) + +for i in range(len(string_tests)): + verifier(f"TO_UPPER_STRING TEST {i+1}", to_upper_string(string_tests[i]), string_tests[i].upper()) + +for i in range(len(string_tests)): + verifier(f"TO_LOWER_STRING TEST {i+1}", to_lower_string(string_tests[i]), string_tests[i].lower()) + +for i in range(len(palindrome_tests)): + verifier(f"CHECK_PALINDROME TEST {i+1}", + check_palindrome(palindrome_tests[i]), + (palindrome_tests[i].lower() == palindrome_tests[i].lower()[::-1])) + +for i in range(len(palindrome_tests)): + val = "".join(e for e in palindrome_tests[i] if e.isalpha()) + verifier(f"CHECK_PALINDROME_ESCAPED TEST {i+1}", + check_palindrome_escaped(palindrome_tests[i]), + (val.lower() == val.lower()[::-1])) + +for i in range(len(split_string_tests)): + separator = ',' + verifier(f"SPLIT_STRING (SEPARATOR='{separator}') TEST {i+1}", + split_string(split_string_tests[i], separator), + split_string_tests[i].split(separator)) + +for i in range(len(split_string_tests)): + separator = ' ' + verifier(f"SPLIT_STRING (SEPARATOR='{separator}') TEST {i+1}", + split_string(split_string_tests[i], separator), + split_string_tests[i].split(separator)) + +for i in range(len(join_array_tests)): + separator = '#' + verifier(f"JOIN_ARRAY (SEPARATOR='{separator}') TEST {i+1}", join_array(join_array_tests[i], separator), separator.join(join_array_tests[i])) + +for i in range(len(join_array_tests)): + separator = '' + verifier(f"JOIN_ARRAY (SEPARATOR='{separator}') TEST {i+1}", join_array(join_array_tests[i], separator), separator.join(join_array_tests[i])) diff --git a/Excercises/тест.py b/Excercises/тест.py new file mode 100755 index 0000000..5836625 --- /dev/null +++ b/Excercises/тест.py @@ -0,0 +1,14 @@ +a = 'Любить по русски' +print(a.split("с")) + +def split_string(string, separator): + array = [] + for i in string: + if i != separator: + array.append(i) + array1 = array + return array1 + print(array1) + + +print(split_string('Они устали ходить под конвоем', 'о')) \ No newline at end of file