misc2.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. # Сортировка строки. В каждом слове содержится число.
  2. # "is2 Thi1s T4est 3a" --> "Thi1s is2 3a T4est"
  3. # "4of Fo1r pe6ople g3ood th5e the2" --> "Fo1r the2 g3ood 4of th5e pe6ople"
  4. from operator import itemgetter
  5. from numpy import block
  6. def order(sentence):
  7. my_list = sentence.split(' ')
  8. new_list = []
  9. print(my_list)
  10. for i in range(len(my_list)):
  11. for j in range(len(my_list)):
  12. if my_list[j].rfind(str(i+1)) != -1:
  13. new_list.append(my_list[j])
  14. return (' '.join(new_list))
  15. #
  16. # def order(sentence):
  17. # return " ".join(sorted(sentence.split(), key=lambda x: int(filter(str.isdigit, x))))
  18. #
  19. # def order(words):
  20. # return ' '.join(sorted(words.split(), key=lambda w:sorted(w)))
  21. # print(order("is2 Thi1s T4est 3a"))
  22. # ------------------------------------------------------------------------------- #
  23. #
  24. def find_even_index(arr):
  25. sum_left = 0
  26. sum_right = 0
  27. sum = []
  28. for i in range(len(arr)):
  29. for j in range(i):
  30. sum_left += arr[j]
  31. for k in range(len(arr) - 1,i ,-1):
  32. sum_right += arr[k]
  33. if sum_left == sum_right:
  34. sum.append(i)
  35. # print(f"Sum let: {sum_left} and sun right: {sum_right}")
  36. sum_left = sum_right = 0
  37. if len(sum) == 0:
  38. return -1
  39. else:
  40. sum.sort()
  41. return(sum[0])
  42. '''
  43. # Лучшее решение
  44. def find_even_index(arr):
  45. for i in range(len(arr)):
  46. if sum(arr[:i]) == sum(arr[i+1:]):
  47. return i
  48. return -1
  49. '''
  50. # print(find_even_index([1,2,3,4,3,2,1]))
  51. # print(find_even_index([1,2,3,4,5,6]))
  52. # ------------------------------------------------------------------------------- #
  53. class StatisticalSummary(object):
  54. BOXPLOT = 0
  55. BOX_AND_WHISKER = 1
  56. BOX_AND_DECILE_WHISKER = 2
  57. TUKEY_BOX_AND_WHISKER = 3
  58. def __init__(self, seq):
  59. self.seq = seq
  60. self.le = 0
  61. self.eu = 0
  62. self.median = 0
  63. self.q1 = 0
  64. self.q3 = 0
  65. def boxplot(self, plot=BOXPLOT, precision=None):
  66. result = []
  67. temp_list = []
  68. number = 0
  69. if type(self.seq[0]) == tuple:
  70. print("Пока не обрабатываем картежи")
  71. else:
  72. temp_list = self.clear_list(self.seq)
  73. temp_list.sort()
  74. self.calculation(temp_list)
  75. result.append(('Sample', number))
  76. return result
  77. def calculation(self, data):
  78. self.le = min(data)
  79. self.eu = max(data)
  80. self.median = self.calculate_median(data)
  81. self.calculate_quartile(data)
  82. def clear_list(self, data):
  83. cleared_list = []
  84. for i in data:
  85. if type(i) == int or type(i) == float:
  86. cleared_list.append(i)
  87. return cleared_list
  88. def calculate_median(self, data):
  89. data_len = len(data)
  90. if data_len%2 == 0:
  91. return ((data[int(data_len/2) - 1] + data[int(data_len/2)]))/2
  92. else:
  93. return data[data_len//2]
  94. def calculate_quartile(self, data):
  95. data_len = len(data)
  96. if data_len%4 == 0:
  97. index = int(data_len/4)
  98. q1 = (data[index] - data[index - 1])*0.25 + data[index - 1]
  99. index = int(data_len/4*3)
  100. q3 = (data[index] - data[index - 1])*0.75 + data[index - 1]
  101. print(data)
  102. print(q1)
  103. print(q3)
  104. return q1, q3
  105. data = list(range(1, 33)) + list(range(12, 21)) + list(range(12, 21)) + list(range(12, 21)) + [16]
  106. d1 = list(range(1, 33)) + list(range(12, 21)) + list(range(12, 21)) + list(range(12, 21)) + [16]
  107. # print(data)
  108. # d1 = range(1, 33) + range(12, 21) + range(12, 21) + range(12, 21) + [16]
  109. d2 = [d - 2 for d in d1[:len(data)//2]] + [d + 2 for d in d1[len(data)//2:]]
  110. data2 = [("A", n) for n in d1] + [("B", n) for n in d2]
  111. # print(data2)
  112. # print(type(data2))
  113. # print(d2)
  114. test_list = [1, 2, 5, 2, 3, 'asdfasd', 2, 3, 12, 45, 3, 6, 25, 54, 32, 12, 14]
  115. summary1 = StatisticalSummary(test_list)
  116. summary1.boxplot()