Number Beggars - Fundamentals PY
Здравейте, от два часа съм "зациклил" трябват ми насоки как да реша тази задача.
1.Number Beggars
Your task here is pretty simple: given a list of numbers and a number of beggars, you are supposed to return a list with the sum of what each beggar brings home, assuming they all take regular turns, from the first to the last.
For example: [1,2,3,4,5] for 2 beggars will return a result of 9 and 6, as the first one takes [1,3,5], the second collects [2,4].
The same list with 3 beggars would produce a better outcome for the second beggar: 5, 7 and 3, as they will respectively take [1, 4], [2, 5] and [3].
Also note that not all beggars have to take the same amount of "offers", meaning that the length of the list is not necessarily a multiple of n; length can be even shorter, in which case the last beggars will of course take nothing (0).
Input
You will receive 2 lines of input: a single string containing the numbers separated by a comma and a space ", ". On the second line you will receive the number of beggars.
Output
Print a list of all the sums that each beggar got.
INPUT OUTPUT | INPUT OUTPUT
1, 2, 3, 4, 5 [9, 6] | 3, 4, 5, 1, 29, 4 [3, 4, 5, 1, 29, 4]
2 | 6
Понеже не мога да разбера този код , ка моли да го напиша , можеш ли да ми дадеш съвет какво да предприема като действие ?
Дебъгвам и дебъгвам , но не схващам логиката ... притесних се до известна степен , как да разбера кода ?
Добре ще ти го обясня по-описателно.
Правиш лист за първия input и ги разделяш с ',' (чрез comprehension) , след това другия input се подразбира.:
Тази част прави в този случей един лист с толкова нули колкото са просяците, за да може сле това в loop-a да се пълнят в зависимост кой е под ред:
След това първия for цикъл прави така че да вземе всеки един от всички просяци, и current_beggar е равен на текущия просяк.:
Тук този for цикъл минава през листа със всички числа които трябва да се разпределят на просяците в зависимост от реда им. current_num проверява чрез %,
проверява дали е равно на 0, щом е равно на 0 значи се дели на сегашния просяк без остатък и това значи че е той. А другия if под него проверява дали този просяк има пари.
В примерите има някой просяци, които са повече от парите и в този случеи е нужен този if.
Aко ли не то под него има там където да се добавят първите пари. Ето това.
И след това else е щом просяка вече е получавал пари да се добавят към онези.
И накрая принтира листа който трябва да е output-a на този код.
Надявам се този път да беше по-добре обяснено. Ако има все пак нещо, което не е ясно ме питай! :)
Много ти благодаря за обяснението , ще го разгледам утре на трезва глава ... (От следобед до сега ми се изпари акъла).
При объркани задачи с if-ове нямам особени проблеми , но при вложените цикли - греда.
Ако има нещо ще ти пиша отново ! :D