Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Переменные
- #digits_list - список чисел
- #index - индекс
- #flag_uncertainty - флаг для просмотра последовательности на неопределенность
- #flag_up_eq_sec, flag_down_eq_sec - проверка на возрастание или убывание\
- #повторяющихся элементов последовательности
- #up_sec, down_sec - переменные считающие количество элементов последовательности
- #i, k - счетчики
- #first, last – первый и последний элементы последовательности, если\
- #присутствуют повторяющиеся элементы. Бывает, что они равны.
- #count_up_sec, count_down_sec - переменные для нахождения количества последовательностей в определенном направлении
- #цикл, находящий количество возрастаний и убываний последовательности
- ##########################################################################
- def dop_fuction():
- global digits_list
- digits_list.pop()
- i = 0
- global count_up_seq
- count_up_seq = 0
- while i < len(digits_list) - 1:
- first = digits_list[i]
- k = 0
- while i < len(digits_list) - 1 and digits_list[i+1] >= digits_list[i]:
- k = 1
- i += 1
- last = digits_list[i]
- i += 1
- if k != 0 and first != last:
- count_up_seq += 1
- i = 0
- global count_down_seq
- count_down_seq = 0
- while i < len(digits_list) - 1:
- first = digits_list[i]
- k = 0
- while i < len(digits_list) - 1 and digits_list[i+1] <= digits_list[i]:
- k = 1
- i += 1
- last = digits_list[i]
- i += 1
- if k != 0 and first != last:
- count_down_seq += 1
- digits_list += [0]
- ##########################################################################
- #проверка на 0
- def input_0():
- if len(digits_list) == 1:
- exit()
- #главный цикл для подсчета количества возрастающих и убывающих элементов
- def main_function():
- index = 0
- # flag_uncertainty для проверки на 5 5 5 0 (неопределенность)
- flag_uncertainty = 0
- up_seq = 0
- down_seq = 0
- while True:
- #обнуление флагов для просмотра последовательности повторяющихся элементов
- flag_up_eq_sec = 0
- flag_down_eq_sec = 0
- #вывод с обходом ошибки при делении на 0
- if index == len(digits_list) - 2:
- if count_up_seq > 0:
- print('Возрастание','{:.3f}'.format(up_seq / count_up_seq),end=' ')
- else:
- print('Возрастание','{:.3f}'.format(up_seq),end=' ')
- if count_down_seq > 0:
- print('Убывание','{:.3f}'.format(down_seq / count_down_seq))
- else:
- print('Убывание','{:.3f}'.format(down_seq))
- exit()
- #возрастание последовательности
- if digits_list[index+1] > digits_list[index]:
- flag_up_eq_sec = 1
- while digits_list[index+1] > digits_list[index]:
- if digits_list[index+1] == 0:
- break
- else:
- flag_uncertainty = 1
- up_seq += 1
- index += 1
- #убывание последовательности
- elif digits_list[index+1] < digits_list[index]:
- flag_down_eq_sec = 1
- while digits_list[index+1] < digits_list[index]:
- if digits_list[index+1] == 0:
- break
- else:
- flag_uncertainty = 1
- down_seq += 1
- index += 1
- #повторяющиеся элементы последовательности
- if digits_list[index+1] == digits_list[index]:
- equal_digits = 0
- while digits_list[index+1] == digits_list[index]:
- equal_digits += 1
- index += 1
- #проверка на неопределенность
- if digits_list[index+1] == 0 and flag_uncertainty == 0:
- print('Возрастание','{:.3f}'.format(0),end=' ')
- print('Убывание','{:.3f}'.format(0))
- exit()
- #если последовательность начинается с повторяющихся элементов
- if flag_up_eq_sec == 0 and flag_down_eq_sec == 0:
- if digits_list[index+1] > digits_list[index]:
- up_seq += equal_digits
- flag_uncertainty = 1
- elif digits_list[index+1]<digits_list[index]:
- down_seq += equal_digits
- flag_uncertainty = 1
- #если в последовательности присутствуют повторяющиеся элементы(не в самом начале)
- if flag_up_eq_sec == 1:
- up_seq += equal_digits
- flag_uncertainty = 1
- elif flag_down_eq_sec == 1:
- down_seq += equal_digits
- flag_uncertainty = 1
- #ввод ввод чисел в строку
- digits_list = list(map(int, input('Введите числа в строку через пробел: ').split()))
- input_0()
- dop_fuction()
- main_function()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement