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
python
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) + ')')
Zadnja sprememba: ponedeljek, 30. oktober 2023, 10.25