# Сумма элементов массива 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): if len(array) == 0: return 0 max_x = array[0] min_x = array[0] for w in array: if w > max_x: max_x = w if w < min_x: min_x = w return max_x * min_x # Развернуть строку (например "Abc" -> "cbA") def invert_string(string): # Что должна возвращать функция? str1 = "" # Проводим вычисления length = len(string) - 1 while length >= 0: str1 = str1 + string[length] length = length - 1 # Вернуть значение return str1 # Все буквы сделать заглавными (например "aBc" -> "ABC") def to_upper_string(string): str2 = "" for c in string: if 97 <= ord(c) <= 122: str2 += chr(ord(c) - 32) else: str2 += c return str2 # Все буквы сделать прописными (например "aBc" -> "abc") def to_lower_string(string): # Что должна возвращать функция? str3 = "" # Проводим вычисления for c in string: # Проверить, какая буква if 65 <= ord(c) <= 90: # Если большая - то превращаем в маленькую и добавляем в итоговую строку str3 += chr(ord(c) + 32) else: str3 += c return str3 # Проверить, является ли строка палиндромом (независимо от больших/маленьких букв) def check_palindrome(string): string = to_lower_string(string) for c in range(len(string)//2): if string[c] != string[-1-c]: return False return True # Проверить, является ли строка палиндромом (независимо от больших/маленьких букв и знаков пунктуации/пробелов) def check_palindrome_escaped(string): string = to_lower_string(string) marks = [' ', ':', ',', '.', '?', '!'] left = 0 right = len(string) - 1 while right > left: if string[left] in marks: left += 1 if string[right] in marks: right -= 1 if string[left] != string[right]: return False left += 1 right -= 1 return True string = check_palindrome(string) return string # "Ручной" аналог функции split() def split_string(string, separator): pass # "Ручной" аналог функции 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]))