Адриана обнови решението на 02.11.2022 17:24 (преди над 2 години)
+dict_mobile_phone = {2: ['A', 'B', 'C'], 3: ['D', 'E', 'F'], 4: ['G', 'H', 'I'], 5: ['J', 'K', 'L'], 6: ['M', 'N', 'O'],
+ 7: ['P', 'Q', 'R', 'S'], 8: ['T', 'U', 'V'], 9: ['W', 'H', 'Y', 'Z'], 0: [' '], 1: []}
+
+
+def nums_to_text(nums):
+ count = 0
+ index = 0
+ result = ""
+ length = len(nums)
+ for i in nums:
+ next_el = -5
+ if index < length - 1:
+ next_el = nums[index + 1]
+ index = index + 1
+ if i == next_el:
+ count = count + 1
+ elif i == -1:
+ count = 0
+ else:
+ temp = count
+ if i == 7 or i == 8:
В Python е прието if i in (7, 8)
+ temp = count % 4
+ else:
+ temp = count % 3
+ for el in dict_mobile_phone[i]:
+ if temp == 0:
+ result = result + el
+ break
+ else:
+ temp = temp - 1
+ count = 0
+ return result
+
+
+def text_to_nums(text):
+ result = []
+ for char in text:
+ index = 0
+ for keys in dict_mobile_phone:
Ако обърнеш речника (направиш друг, в който размениш местата на ключ/стойност), ще спестиш един цикъл.
Това, разбира се, можеш да направиш динамично. Не е нужно да го дефинираш ръчно. Просто обхождаш старта дефиниция в началото на файла и правиш обратната, така че функциите ти после да могат да я използват.
+ for el in dict_mobile_phone[keys]:
+ index = index + 1
+ if char.upper() == el:
+ while index > 0:
+ result.append(keys)
+ index = index - 1
+ continue
+ index = 0
+ return result
+
+
+def nums_to_angle(nums):
+ result = 0
+ for el in nums:
+ if 0 < el <= 9:
+ result = result + el * 30
+ elif el == 0:
+ result = result + 300
+ else:
+ continue
+ while result >= 360:
+ result = result - 360
+ return result
+
+
+def angles_to_nums(angles):
+ result = []
+ for el in angles:
+ if 0 <= el < 360 and el % 30 == 0 and el < 330:
+ result.append(el // 30)
+ else:
+ while el < 0:
+ el = 360 + el
+ while el >= 360:
+ el = el - 360
+ if el % 30 == 0 and el < 330:
+ result.append(el // 30)
+ else:
+ temp = el % 30
+ if temp > 15:
+ el = 30 - temp + el
+ else:
+ el = el - temp
+ if el != 0 and el < 330:
+ result.append(el // 30)
+ return result
+
+
+def is_phone_tastic(word):
+ text = text_to_nums(word)
+ angle = nums_to_angle(text)
+ length = len(word)
+ if angle % length == 0:
+ return True
+ else:
+ return False
В Python е прието
if i in (7, 8)
Ако обърнеш речника (направиш друг, в който размениш местата на ключ/стойност), ще спестиш един цикъл.
Това, разбира се, можеш да направиш динамично. Не е нужно да го дефинираш ръчно. Просто обхождаш старта дефиниция в началото на файла и правиш обратната, така че функциите ти после да могат да я използват.