Vsebuje

Napiši program, ki ugotovi ali seznam števil vsebuje število 42. Seznam definiraj na vrhu programa:

xs = [5, 4, -7, 42, 12, -3, -4, 11, 42, 2]

Na konec programa pa napiši:

print(videl_sem_42)
if videl_sem_42:
    print("Res sem videl 42.")

V programu naj ne bo nobenih drugih print-ov.

Program naj izpiše True ali False (samo enkrat!) in nato Res sem videl 42., če je prej izpisal True.

Seveda mora program delati za poljubne sezname in ne samo za seznam iz primera. Program preskusi tudi, če seznam ne vsebuje 42.

Rešitev

xs = [42, 5, 4, -7, 2, 12, -3, -4, 11, 42, 2]

vsebuje = False
for x in xs:
    if x == 42:
        vsebuje = True
print(vsebuje)

Program znamo napisati tudi krajše

xs = [42, 5, 4, -7, 2, 12, -3, -4, 11, 42, 2]

print(42 in xs)

Vsebuje niz

Enako kot naloga "Vsebuje", le da bomo tokrat v seznamu nizov iskali niz 'Waldo'. Program naj se začne z

xs = ['foo', 'bar', 'baz', 'Waldo', 'foobar']

in izpiše True ali False.

Rešitev Rešitev naloge je enaka prejšnji, le da 42 zamenjamo z 'Waldo'.

xs = ['foo', 'bar', 'baz', 'Waldo', 'foobar']

vsebuje = False
for x in xs:
    if x == 'Waldo':
        vsebuje = True
print(vsebuje)

ali krajše

xs = ['foo', 'bar', 'baz', 'Waldo', 'foobar']

print('Waldo' in xs)

Štej

Napiši program, ki v podanem seznamu prešteje število ponovitev števila 42. Seznam definiraj na vrhu programa, kot v prvi nalogi, izpis pa naj bo takšen: 'Število 42 se v seznamu pojavi 2 krat.'

Rešitev

xs = [42, 5, 4, -7, 2, 12, -3, -4, 11, 42, 2]

cnt = 0
for x in xs:
    if x == 42:
        cnt += 1

print('Število 42 se v seznamu pojavi', cnt, 'krat.')

Spoznajte metodo count:

xs = [42, 5, 4, -7, 2, 12, -3, -4, 11, 42, 2]

print('Število 42 se v seznamu pojavi', xs.count(42), 'krat.')

Vsebuje večkratnik

Napiši program, ki izpiše True, če se v seznamu števil pojavi večkratnik števila 42, sicer izpiše False.

Rešitev

xs = [42, 5, 4, -7, 2, 12, -3, -4, 11, 42, 2]

vsebuje = False
for x in xs:
    if x % 42 == 0:
        vsebuje = True
print(vsebuje)

Le večkratniki

Napiši program, ki izpiše True, če seznam števil vsebuje le večkratnike števila 42, sicer izpiše False.

Rešitev

xs = [42, 48, 0, -42]

samo_veckratniki = True
for x in xs:
    if x % 42 != 0:
        samo_veckratniki = False
print(samo_veckratniki)

Delitelji

Napiši program, ki izpiše vse delitelje števila, ki ga vnese uporabnik.

Rešitev

n = int(input('Vnesi število: '))
for i in range(1, n):
    if n % i == 0:
        print(i)

Vsota deliteljev

Napiši program, ki izpiše vsoto vseh deliteljev števila, ki ga vnese uporabnik.

Rešitev

n = int(input('Vnesi število: '))
vsota = 0
for i in range(1, n):
    if n % i == 0:
        vsota += i
print(vsota)

Popolna števila

Napiši program, ki pove, ali je podano število popolno. Popolna števila so števila, ki so enaka vsoti svojih deliteljev (brez samega sebe). Primer popolnega števila je 28, saj so njegovi delitelji 1, 2, 4, 7, 14, njihova vsota, 1+2+4+7+14 pa je spet enaka 28.

Rešitev

n = int(input('Vnesi število: '))
vsota = 0
for i in range(1, n):
    if n % i == 0:
        vsota += i
if vsota == n:
    print('Je popolno')
else:
    print('Ni popolno')

Prijateljska števila

220 in 284 sta prijateljski števili. Delitelji 220 so 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 in 110. Če jih seštejemo, dobimo 284. Delitelji 284 pa so 1, 2, 4, 71 in 142. Vsota teh števil pa je 220. Napiši program, ki mu uporabnik vnese število. Program preveri, ali ima to število prijatelja in če ga ima, ga izpiše. Če ga nima, pa pove, da ga nima. Primer: če uporabnik vpiše 220, program odgovori 284. Če uporabnik vpiše 222, program odgovori, da 222 nima prijateljev.

Rešitev

n = int(input('Vnesi število: '))

vsota = 0
for i in range(1, n):
    if n % i == 0:
        vsota += i

prij_st = vsota
vsota = 0
for i in range(1, prij_st):
    if prij_st % i == 0:
        vsota += i

if n == vsota:
    print(prij_st)
else:
    print('Nima prijateljev')

Za tiste, ki že poznate funkcije pa je lahko rešitev veliko krajša:

def vsota_deliteljev(n):
    vsota = 0
    for i in range(1, n):
        if n % i == 0:
            vsota += i
    return vsota

n = int(input('Vnesi število: '))
vsota = vsota_deliteljev(n)
if n == vsota_deliteljev(vsota):
    print(vsota)
else:
    print('Nima prijateljev')

Praštevilo

Napišite program, ki za dano število preveri, ali je praštevilo.

Rešitev

n = int(input("Vnesi število: "))
for j in range(2, n):
    if n % j == 0:
        print(n, "ni praštevilo")
        break
else:   
    print(n, "je praštevilo")

Praštevila

Napišite program, ki izpiše praštevila med 2 in 100.

Rešitev

for i in range(2, 100):
    for j in range(2, i):
        if i % j == 0:
            break
    else:   
        print(i)

Kino

Podan je seznam filmov in njihovih ocen (na imdb).

filmi = [
    ('Poletje v skoljki 2', 6.1), 
    ('Ne cakaj na maj', 7.3), 
    ('Pod njenim oknom', 7.1),
    ('Kekec', 8.1), 
    ('Poletje v skoljki', 7.2), 
    ('To so gadi', 7.7), 
]

Napiši program, ki izpiše

  • imena vseh filmov z oceno vsaj 7.0,

    Ne cakaj na maj
    Pod njenim oknom
    Kekec
    Poletje v skoljki
    To so gadi
    

Rešitev

for film, ocena in filmi:
    if ocena >= 7.0:
        print(film)

  • ime filma z najvišjo oceno,

    Kekec
    

Rešitev

naj_ocena = 0
for film, ocena in filmi:
    if ocena > naj_ocena:
        naj_ocena = ocena
        naj_film = film
print(naj_film)

  • ime prvega filma v seznamu z oceno vsaj 7.0,

    Ne cakaj na maj
    

Rešitev

for film, ocena in filmi:
    if ocena >= 7.0:
        print(film)
        break

  • povprečno oceno vseh filmov v seznamu,

    7.25
    

Rešitev

vsota = 0
for _, ocena in filmi:
    vsota += ocena
print(vsota / len(filmi))

  • imena vseh filmov pri katerih je bil posnet tudi drugi del.

    Poletje v skoljki
    

Rešitev

for film1, _ in filmi:
    nadaljevanje = film1 + ' 2'
    for film2, _ in filmi:
        if nadaljevanje == film2:
            print(film1)

Kino 2

Kaj pa če so filmi in ocene podani v ločenih seznamih?

filmi = ['Poletje v skoljki 2', 'Ne cakaj na maj', 'Pod njenim oknom', 'Kekec', 'Poletje v skoljki', 'To so gadi']
ocene = [6.1, 7.3, 7.1, 8.1, 7.2, 7.7]

Napiši program, ki izpiše imena in ocene filmov katerih naslovi so sestvaljeni iz treh besed (vsebujejo dva presledka).

Pod njenim oknom (7.1)
Poletje v skoljki (7.2)
To so gadi (7.7)

Rešitev

for film, ocena in zip(filmi, ocene):
    presledki = 0
    for crka in film:
        if crka == ' ':
            presledki += 1
    if presledki == 2:
        print(film + ' (' + str(ocena) + ')')

Last modified: Friday, 23 October 2020, 12:41 PM