Клементина обнови решението на 03.11.2022 14:26 (преди над 2 години)
+buttons = (
+ (' '),
+ (''),
+ ('A', 'B', 'C'),
+ ('D', 'E', 'F'),
+ ('G', 'H', 'I'),
+ ('J', 'K', 'L'),
+ ('M', 'N', 'O'),
+ ('P', 'Q', 'R', 'S'),
+ ('T', 'U', 'V'),
+ ('W', 'X', 'Y', 'Z')
+ )
+
+zero = (286,300, 315)
+one = (16, 30, 45)
+two = (46, 60, 75)
+three = (76, 90, 105)
+four = (106, 120, 135)
+five = (136, 160, 175)
+six = (176, 180, 195)
+seven = (196, 210, 225)
+eight = (226, 240, 265)
+nine = (266, 270, 285)
+nothing = (316, 360, 15)
+
+
+
+def nums_to_text(nums):
+ msg = []
+ count = 1
+ for i in range(len(nums)):
+ if nums[i] in [-1, 1] :
+ continue
+ if i == len(nums)-1:
+ count = count%len(buttons[nums[i]])
+ if count == 0:
+ msg.append(buttons[nums[i]][-1])
+ elif count == 1:
+ msg.append(buttons[nums[i]][0])
+ elif count == 2:
+ msg.append(buttons[nums[i]][1])
+ elif count == 3:
+ msg.append(buttons[nums[i]][2])
+ count = 1
+ continue
+ if nums[i] == nums[i+1]:
+ count +=1
+ else:
+ count = count%len(buttons[nums[i]])
+ if count == 0:
+ msg.append(buttons[nums[i]][-1])
+ elif count == 1:
+ msg.append(buttons[nums[i]][0])
+ elif count == 2:
+ msg.append(buttons[nums[i]][1])
+ elif count == 3:
+ msg.append(buttons[nums[i]][2])
+ count = 1
+ return ''.join(msg)
+
+def text_to_nums(text):
+ msg = []
+ for letter in text.upper():
+ for i in range(len(buttons)):
+ if letter in buttons[i]:
+ count = buttons[i].index(letter) + 1
+ msg.extend([i]*count)
+ return msg
+
+
+def nums_to_angle(nums):
+ angles = 0
+ for num in nums:
+ if num == 0:
+ angles += zero[1]
+ elif num == 1:
+ angles += one[1]
+ elif num == 2:
+ angles += two[1]
+ elif num == 3:
+ angles += three[1]
+ elif num == 4:
+ angles += four[1]
+ elif num == 5:
+ angles += five[1]
+ elif num == 6:
+ angles += six[1]
+ elif num == 7:
+ angles += seven[1]
+ elif num == 8:
+ angles += eight[1]
+ elif num == 9:
+ angles += nine[1]
+ while angles > 360:
+ angles = angles%360
+
+ return angles
+
+
+def angles_to_nums(angles):
+ phone_number = []
+ for angle in angles:
+ angle = angle%360
+ if nothing[0] <= angle or angle <= nothing[2]:
+ pass
+ elif one[0] <= angle <= one[2]:
+ phone_number.append(1)
+ elif two[0] <= angle <= two[2]:
+ phone_number.append(2)
+ elif three[0] <= angle <= three[2]:
+ phone_number.append(3)
+ elif four [0] <= angle <= four[2]:
+ phone_number.append(4)
+ elif five[0] <= angle <= five[2]:
+ phone_number.append(5)
+ elif six[0] <= angle <= six[2]:
+ phone_number.append(6)
+ elif seven[0] <= angle <= seven[2]:
+ phone_number.append(7)
+ elif eight[0] <= angle <= eight[2]:
+ phone_number.append(8)
+ elif nine[0] <= angle <= nine[2]:
+ phone_number.append(9)
+ return phone_number
+
+
+def is_phone_tastic(word):
+ nums = text_to_nums(word)
+ angle = nums_to_angle(nums)
+ if angle % len(word) == 0:
+ return True
+ else:
+ return False
Имаш един липсващ интерал, но това е само между другото.
Иначе, ако използваш речник, ще ти е по-лесно да достъпиш данните по-долу.
За този
if
можеш да приложиш малко математически операции с%
, за да си спестиш повторения.Моля слагай интервали около равното.
Моля слагай интервали около
*
и други аритметични оператори.Моля не слагай скоби в условието на
if
.