1def beginning(word):
2 if len(word) % 3 == 0:
3 return word[:len(word)//3:]
4 if len(word) % 3 == 1:
5 return word[:len(word)//3:]
6 if len(word) % 3 == 2:
7 return word[:len(word)//3+1:]
8
9def middle(word):
10 if len(word) % 3 == 0:
11 return word[len(word)//3:2*len(word)//3:]
12 if len(word) % 3 == 1:
13 return word[len(word)//3:2*len(word)//3+1:]
14 if len(word) % 3 == 2:
15 return word[len(word)//3+1:2*len(word)//3:]
16
17def end(word):
18 if len(word) % 3 == 0:
19 return word[2*len(word)//3:]
20 if len(word) % 3 == 1:
21 return word[2*len(word)//3+1:]
22 if len(word) % 3 == 2:
23 return word[2*len(word)//3:]
24
25def word_result(word):
26 return (beginning(word), middle(word), end(word))
27
28def split_sentence(sentence):
29 words = sentence.split()
30 res = []
31 for word in words:
32 res.append(word_result(word))
33 return res
............
----------------------------------------------------------------------
Ran 12 tests in 0.000s
OK
|
Димитър Христов
15.10.2023 16:26Ето с разделени по функциите код. Също така наистина работи само с едни :
|
Георги Кунчев
15.10.2023 10:57Цялата идея с изнасянето на логиката за всички три функции в отделна не ми допада. Имаш едни стрингове, които определят резултата, а базиране на логика по стрингове може лесно да се оплеска с някое тайпо.
Като цяло решението ще бъде далеч по-добро, ако всяка функция държи логиката си, а не я делегира на друга, претоварена от логиката и за трите функции, функция.
|
| n | 1 | def word_cutter(word, position): | n | 1 | def beginning(word): |
| 2 | if len(word) % 3 == 0: | 2 | if len(word) % 3 == 0: | ||
| n | 3 | if position == "start": | n | ||
| 4 | return word[:len(word)//3:] | 3 | return word[:len(word)//3:] | ||
| 5 | if position == "mid": | ||||
| 6 | return word[len(word)//3:2*len(word)//3:] | ||||
| 7 | if position == "end": | ||||
| 8 | return word[2*len(word)//3::] | ||||
| 9 | if len(word) % 3 == 1: | 4 | if len(word) % 3 == 1: | ||
| n | 10 | if position == "start": | n | ||
| 11 | return word[:len(word)//3:] | 5 | return word[:len(word)//3:] | ||
| 12 | if position == "mid": | ||||
| 13 | return word[len(word)//3:2*len(word)//3+1:] | ||||
| 14 | if position == "end": | ||||
| 15 | return word[2*len(word)//3+1::] | ||||
| 16 | if len(word) % 3 == 2: | 6 | if len(word) % 3 == 2: | ||
| n | 17 | if position == "start": | n | ||
| 18 | return word[:len(word)//3+1:] | 7 | return word[:len(word)//3+1:] | ||
| 19 | if position == "mid": | ||||
| 20 | return word[len(word)//3+1:2*len(word)//3:] | ||||
| 21 | if position == "end": | ||||
| 22 | return word[2*len(word)//3::] | ||||
| 23 | |||||
| 24 | def beginning(word): | ||||
| 25 | return word_cutter(word, "start") | ||||
| 26 | 8 | ||||
| 27 | def middle(word): | 9 | def middle(word): | ||
| n | 28 | return word_cutter(word, "mid") | n | 10 | if len(word) % 3 == 0: |
| 11 | return word[len(word)//3:2*len(word)//3:] | ||||
| 12 | if len(word) % 3 == 1: | ||||
| 13 | return word[len(word)//3:2*len(word)//3+1:] | ||||
| 14 | if len(word) % 3 == 2: | ||||
| 15 | return word[len(word)//3+1:2*len(word)//3:] | ||||
| 29 | 16 | ||||
| 30 | def end(word): | 17 | def end(word): | ||
| n | 31 | return word_cutter(word, "end") | n | 18 | if len(word) % 3 == 0: |
| 19 | return word[2*len(word)//3:] | ||||
| 20 | if len(word) % 3 == 1: | ||||
| 21 | return word[2*len(word)//3+1:] | ||||
| 22 | if len(word) % 3 == 2: | ||||
| 23 | return word[2*len(word)//3:] | ||||
| 32 | 24 | ||||
| 33 | def word_result(word): | 25 | def word_result(word): | ||
| t | 34 | return (word_cutter(word, "start"), word_cutter(word, "mid"), word_cutter(word, "end")) | t | 26 | return (beginning(word), middle(word), end(word)) |
| 35 | 27 | ||||
| 36 | def split_sentence(sentence): | 28 | def split_sentence(sentence): | ||
| 37 | words = sentence.split() | 29 | words = sentence.split() | ||
| 38 | res = [] | 30 | res = [] | ||
| 39 | for word in words: | 31 | for word in words: | ||
| 40 | res.append(word_result(word)) | 32 | res.append(word_result(word)) | ||
| 41 | return res | 33 | return res |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||