1def beginning(word):
2 length = len(word) # take the length
3 end = length # default end
4
5 # in both 0|1 remainder cases we have the same amount
6 if length % 3 != 2:
7 end = end // 3
8 return word[0:end]
9 # other wise the 2 remainder case
10 end = end // 3 + 1
11 return word[0:end]
12
13def middle(word):
14 length = len(word)
15 start = 0 #default start
16 end = length # default end
17 # take the portion from the first third to the second third
18 if length % 3 == 0:
19 start = length // 3
20 end = 2 * start
21 return word[start:end]
22 # both the beg and end are the same length - leftover is the middle
23 if length % 3 == 1:
24 start = length // 3
25 end = length - (length // 3)
26 return word[start:end]
27 # same as the above but account for the 'extra' chars a 1 more
28 if length % 3 == 2:
29 start = length // 3 + 1
30 end = length - (length // 3) - 1
31 return word[start:end]
32
33def end(word):
34 # take the beginning of the reversed string
35 reversed_end = beginning(word[::-1])
36 # reverse it back and return
37 return reversed_end[::-1]
38
39def split_sentence(sentence):
40 result=[] # init a list
41 words=sentence.split() # split the sentence
42 for word in words: # traverse the words
43 parts=(beginning(word),middle(word),end(word)) # construct the tuple
44 result.append(parts) # add to the list
45 return result
............
----------------------------------------------------------------------
Ran 12 tests in 0.000s
OK
Георги Кунчев
16.10.2023 12:17Ок е дори да нямаш нито един (за домашните). Иначе, на места си е добре да оставиш, ако кодът не е достатъчно ясен по въпроса ЗАЩО се прави нещо.
|
Мартин Кузманов
16.10.2023 12:12А по принцип, проблем ли е да липсват коментари? Питам понеже не знаех как стои въпроса при оценяването на домашна.
|
Георги Кунчев
16.10.2023 09:08Доста голямо количество коментари си оставил. Коментарите са хубаво нещо, но ако това, което те показват, е очевидно от кода, са по-скоро излишни и само прачат на четящия да се концентрира. Например "split the sentence, construct the tuple"...никаква допълнителна информация. Коментарите в `end` са добре.
|
| n | 1 | def beggining(word): | n | 1 | def beginning(word): |
| 2 | length = len(word) # take the length | 2 | length = len(word) # take the length | ||
| 3 | end = length # default end | 3 | end = length # default end | ||
| n | 4 | n | 4 | ||
| 5 | # in both 0|1 remainder cases we have the same amount | 5 | # in both 0|1 remainder cases we have the same amount | ||
| 6 | if length % 3 != 2: | 6 | if length % 3 != 2: | ||
| 7 | end = end // 3 | 7 | end = end // 3 | ||
| 8 | return word[0:end] | 8 | return word[0:end] | ||
| 9 | # other wise the 2 remainder case | 9 | # other wise the 2 remainder case | ||
| 10 | end = end // 3 + 1 | 10 | end = end // 3 + 1 | ||
| 11 | return word[0:end] | 11 | return word[0:end] | ||
| 12 | 12 | ||||
| 13 | def middle(word): | 13 | def middle(word): | ||
| 14 | length = len(word) | 14 | length = len(word) | ||
| 15 | start = 0 #default start | 15 | start = 0 #default start | ||
| 16 | end = length # default end | 16 | end = length # default end | ||
| 17 | # take the portion from the first third to the second third | 17 | # take the portion from the first third to the second third | ||
| 18 | if length % 3 == 0: | 18 | if length % 3 == 0: | ||
| 19 | start = length // 3 | 19 | start = length // 3 | ||
| 20 | end = 2 * start | 20 | end = 2 * start | ||
| 21 | return word[start:end] | 21 | return word[start:end] | ||
| 22 | # both the beg and end are the same length - leftover is the middle | 22 | # both the beg and end are the same length - leftover is the middle | ||
| 23 | if length % 3 == 1: | 23 | if length % 3 == 1: | ||
| 24 | start = length // 3 | 24 | start = length // 3 | ||
| 25 | end = length - (length // 3) | 25 | end = length - (length // 3) | ||
| 26 | return word[start:end] | 26 | return word[start:end] | ||
| 27 | # same as the above but account for the 'extra' chars a 1 more | 27 | # same as the above but account for the 'extra' chars a 1 more | ||
| 28 | if length % 3 == 2: | 28 | if length % 3 == 2: | ||
| 29 | start = length // 3 + 1 | 29 | start = length // 3 + 1 | ||
| 30 | end = length - (length // 3) - 1 | 30 | end = length - (length // 3) - 1 | ||
| 31 | return word[start:end] | 31 | return word[start:end] | ||
| 32 | 32 | ||||
| 33 | def end(word): | 33 | def end(word): | ||
| n | 34 | # take the beggining of the reversed string | n | 34 | # take the beginning of the reversed string |
| 35 | reversed_end = beggining(word[::-1]) | 35 | reversed_end = beginning(word[::-1]) | ||
| 36 | # reverse it back and return | 36 | # reverse it back and return | ||
| 37 | return reversed_end[::-1] | 37 | return reversed_end[::-1] | ||
| 38 | 38 | ||||
| 39 | def split_sentence(sentence): | 39 | def split_sentence(sentence): | ||
| 40 | result=[] # init a list | 40 | result=[] # init a list | ||
| 41 | words=sentence.split() # split the sentence | 41 | words=sentence.split() # split the sentence | ||
| 42 | for word in words: # traverse the words | 42 | for word in words: # traverse the words | ||
| t | 43 | parts=(beggining(word),middle(word),end(word)) # construct the tuple | t | 43 | parts=(beginning(word),middle(word),end(word)) # construct the tuple |
| 44 | result.append(parts) # add to the list | 44 | result.append(parts) # add to the list | ||
| 45 | return result | 45 | return result |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
16.10.2023 09:05
16.10.2023 09:06
16.10.2023 09:06