Рачунање са листама

Овде ћемо још мало увежбавати рад са листама и комбинавање техника које смо до сада научили.

Задатак - најмањи позитиван број

Дата је торка бројева. Исписати најмањи позитиван број из те торке.

Овај задатак је комбинација задатака какве смо радили до сада. У првом делу задатка у листу копирамо позитивне бројеве из торке, а у другом делу примењујемо функцију min на листу позитивних бројева.

Поменули смо да функције min, max, sum, len могу да се примене различите колекције и показали смо то на примерима торке, опсега и стринга (изузев суме елемената стринга). Сада видимо да функција min прихвата и листу као свој аргумент. Исто важи и за функције max, sum, len.

Пример - кварови

У једној фабрици има 10 машина и оне су представљене бројевима од 0 до 9. За сваки квар који је настао бележи се број машине која се кварила. Ови бројеви су дати у торки на почетку скрипте.

    Напишите програм који исписује колико је пута свака од машина неисправно функционисала, а затим и бројеве машина које се нису ни једном поквариле.

Први део задатка захтева да пребројимо колико пута се сваки број појављује у улазним подацима. Да бисмо решили тај део задатка, правимо низ br_kvarova од 10 елемената (који су иницијално нуле), у коме сваки елемент одговара једној машини и броји њене кварове.

br_kvarova = [0] * 10
for masina in kvarovi:
    br_kvarova[masina] += 1

Након тога за сваку машину исписујемо колико је имала кварова. Овде користимо опсег јер желимо да за сваку машину поред броја кварова испишемо и њен редни број:

for masina in range(10):
    print('Машина', masina, 'се кварила', br_kvarova[masina], 'пута.')

У другом делу задатка се тражи да испишемо бројеве машина које се нису квариле. То су машине којима је број кварова једнак нули. Пролазимо још једном кроз листу br_kvarova и индексе елемената једнаких нули убацујемо у листу ispravne:

ispravne = []
for masina in range(10):
    if br_kvarova[masina] == 0:
        ispravne.append(masina)

На крају исписујемо елементе листе ispravne:

print('Машине које се нису квариле:')
for masina in ispravne:
    print(masina)

Ево како изгледа цео програм:

Задатак - навијачи

Навијачи из 8 земаља долазе на турнир у град X. Организатори турнира желе да знају колико навијача долази из сваке од земаља.

Свака земља је представљена бројем од 0 до 7. Дати бројеви за сваког навијача говоре из које земље он долази. Допунити програм који за сваку земљу исписује колико навијача долази из ње.

У задатку се тражи да се за сваки број од 0 то 7 преброји колико пута се тај број појављује межу датим бројевима. Део који недостаје је врло сличан бројању кварова из датог примера.

Задатак - највише навијача

Ово је наставак претходног задатка. Организатори сада додатно желе да знају из које земље долази највише навијача.

Ископирајете претходни програм и допуните га тако да на крају исписује број земље из које долази највише навијача.

Ако исправно решите задатак, програм треба да испише број 3, јер се тај број начешће појављује међу подацима.

Задатак - Највећи негативан број

Дата је торка бројева. Исписати највећи негативан број из те торке.

Задатак - Мале продаје

Дата торка садржи износе рачуна купаца у једној продајној мрежи. Све продаје са износом мањим од 500 се сматрају за мале продаје. Написати програм који израчунава укупан приход од свих малих продаја.

Овај задатак можете да решавате на два начина. Један је издвајање малих износа у посебну листу и примена функције sum на ту листу. Други начин је постепено грађење збира, као што смо то радили у лекцији о бројању и сумирању.